c++ - 如何让程序等待命令执行

标签 c++ shell command

我正在尝试通过程序执行系统命令,然后等待进程终止以继续执行代码指令。我一直在使用 sleep() 但它没有成功,因为它是相对的,我的意思是执行时间因机器而异......那么有什么解决方案吗?

考虑下面的代码(语言==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"; }

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

最佳答案

使用 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
}

关于c++ - 如何让程序等待命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17773855/

相关文章:

c++ - pcl::VoxelGrid<PointXYZ> 不适用于 pcl::PointCloud<PointXYZ>

c++ - visual studio 2012 cpp 文件未链接

linux - Linux Shell 脚本中的逻辑错误

shell - 获取用于启动脚本的命令

wpf - 如何从 WPF 中的子控件中获取键盘?

c++ - 不明白const对函数和类的使用

c++ - 将数组值(行)添加到二维数组 C++

linux - 如何使用另一个shell脚本一个接一个地运行多个shell脚本

linux - wget 和 bash 错误 : bash: line 0: fg: no job control

linux - 查找和计算在 Web 服务器上访问的唯一文件