Making an exe pause

Making an exe pause

本文关键字:pause exe an Making      更新时间:2023-10-16

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

如何使一个exe暂停,直到另一个exe执行?

的例子:

我有一个exe,它为不同的情况(错误,无效参数等)创建对话框。有时我可能会从用户那里取一个参数&有时我可能不会。所以,直到我从用户获取参数我如何使我的main。exe暂停?此外,我希望在另一个exe中使用参数。

那么我应该使用new来动态存储arg吗?传递指针到我需要参数的任何exe中的内存位置?通过这样做我做内存泄漏吗?我将使用delete在我需要的参数结束后。

要在Windows上做到这一点,您需要使用CreateProcess()生成您的进程,然后等待使用WaitForSingleObjectPROCESS_INFORMATION结构中返回的句柄。

确保CreateProcess呼叫成功。任何参数都可以通过命令行传递,也可以使用共享内存或命名管道传递,示例如下:

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

wait for *unix

WaitForSingleObject for Win.

如果我没记错的话,Boost库实际上使用了这些函数。

最简单的解决方案是使用system函数来执行其他程序。在你的main.exe中,你应该写:

system("other.exe");

你也可以传递命令行参数:

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

对于这种情况,不需要使用new分配对象,但是必须从argcargv中解析other.exe中的参数。您的main.exe将暂停直到other.exe完成。