gpt4 book ai didi

c++ - VS2012,使用崩溃的系统函数调用exe

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:27:42 37 4
gpt4 key购买 nike

我正在使用 Visual Studio 2012。我正在使用系统函数来运行 exe。如果此 exe 崩溃,它会弹出对话框,提示需要关闭该程序。但它会卡住调用程序,直到我关闭该框。调用程序是否有退出 exe 并继续的方法?它只需要适用于 Windows。

我是这样打电话的

int ret = system((prog + "> log.txt 2>&1").c_str());

额外的是输出std out和err到日志文件。

奇怪的是,如果我删除该部分,它会很好地返回控制权。

int ret = system((prog).c_str());

有什么想法吗?谢谢

编辑:好的,如果我这样做,它会返回控制权

int ret = system((prog + "> log.txt").c_str());

我从这个网站得到了额外的字符:

http://www.robvanderwoude.com/redirection.php

最佳答案

需要修改对方进程的错误模式。如果你控制了其他进程的代码,调用SetErrorMode并将 SEM_FAILCRITICALERRORS 选项添加到错误模式。您应该在流程开始执行后立即进行此调用。

MSDN 上的文档甚至讨论了您遇到的问题:

Best practice is that all applications call the process-wide SetErrorMode function with a parameter of SEM_FAILCRITICALERRORS at startup. This is to prevent error mode dialogs from hanging the application.

如果你无法控制其他进程中的代码,那么你可以在你的进程中设置错误模式。这将产生预期的效果,因为子进程继承了其父进程的错误模式。

关于c++ - VS2012,使用崩溃的系统函数调用exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16648568/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com