让exe暂停

时间:2011-11-09 10:15:50

标签: c++ multithreading memory-management

我在我的C ++程序中使用main.exe,然后在某些情况下调用其他可执行文件。

在执行另一个exe之前如何暂停exe?

示例:

我有一个exe为不同的情况创建对话框(错误,无效的arg等)。有时我可能会从用户那里拿出一个arg&有时我可能不会。 所以,直到我从用户那里拿arg如何让我的main.exe暂停?另外,我想在另一个exe中使用arg。

我应该使用 new 来动态存储arg&将指针传递给我需要arg的exe中的内存位置?通过这样做,我做内存泄漏?在我需要arg结束后,我将使用删除

3 个答案:

答案 0 :(得分:1)

您可以使用Boost(不记得确切的库名称),也可以使用:

wait for * unix

胜利

WaitForSingleObject

如果我没有误会,Boost库实际上会使用这些函数。

答案 1 :(得分:1)

要在Windows上执行此操作,您需要使用CreateProcess()生成流程,然后使用PROCESS_INFORMATION等待WaitForSingleObject结构中返回的句柄。

确保CreateProcess调用成功。任何参数都可以通过命令行或使用共享内存或命名管道传递,有关示例,请参阅this

答案 2 :(得分:0)

最简单的解决方案是执行其他程序的system函数。在你的main.exe中写道:

system("other.exe");

您还可以传递命令行参数:

#include <stringstream>
...

std::stringstream ss;
ss << "other.exe" << " " << "first-arg" << " " << "second-arg";
system(ss.str().c_str());

为此,不需要使用new分配对象,但必须在other.exeargc的{​​{1}}中解析参数。在argv完成之前,您的main.exe会暂停。