例1:
string path = "D:\\My_Work\\Code\\C++\\test2\\Debug\\test2.exe";
int a = WinExec(path.data(), SW_SHOWMAXIMIZED);
我成功运行上面的代码,但是a一直为33,后来才发现,WinExec只能返回是否运行成功,返回值大于31,则表示运行成功。所以,实际上,我并不能真正得到我想要的返回值main函数的return值。
例2:
string path = "D:\\My_Work\\Code\\C++\\test2\\Debug\\test2.exe";
int b = system(path.data());
此时,便能够正确地得到.exe源码中main函数return的值了。
总结:system是同步调用进程,调用的进程不结束,就不返回。而WinExec是不同步的进程调用,一调用就立刻返回一个值(该值代表是否运行成功),不会等调用的程序结束。