我正在尝试通过程序执行系统命令,然后等待进程终止以继续执行代码的指令。我一直在使用sleep()
但它没有用,因为它是相对的我的意思是执行时间因机器不同而有所不同......所以有没有解决方案?
考虑下面的代码(language == c ++):
ShellExecute(0, "open", "cmd.exe","/C rasdial adsl user pwd", 0, SW_HIDE); //can also use system().
Sleep(sec);
if(CheckConnection()) {cout <<"U r connected"; }
等到系统命令执行以检查连接(我想你现在得到)。
答案 0 :(得分:6)
使用ShellExecuteEx而不是ShellExecute,然后使用您收到的hProcess调用WaitForSingleObject:
SHELLEXECUTEINFO info = { sizeof(SHELLEXECUTEINFO) };
// fill in values in SHELLEXECUTEINFO as necessary
if (ShellExecuteEx(&info))
{
WaitForSingleObject (info.hProcess, INFINITY);
// The new process has now completed
}
else
{
// Launch failed
}
答案 1 :(得分:0)
使用CreateProcee
您有更多选项,请参阅此示例http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx以使用WaitForSingleObject
等待程序完成