如何使程序等待命令执行

时间:2013-07-21 15:22:13

标签: c++ shell command

我正在尝试通过程序执行系统命令,然后等待进程终止以继续执行代码的指令。我一直在使用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"; }

等到系统命令执行以检查连接(我想你现在得到)。

2 个答案:

答案 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等待程序完成