gpt4 book ai didi

c++ - 如果父/子异常退出,则使 fork 进程保持事件状态 (C++)

转载 作者:太空狗 更新时间:2023-10-29 21:50:31 24 4
gpt4 key购买 nike

我正在尝试与当前进程并行执行另一个命令行进程。但是,我意识到命令行程序有时会异常退出,这也会杀死我的主程序。

// MAIN PROGRAM
pid = fork();
char *argv[] = { stuff.. };
if (pid == 0) {
int rc = execv("command line program...", argv);
}

// DO OTHER STUFF HERE.

if (pid > 0) {
waitpid(pid, 0, 0);
}

有什么方法可以让我的主程序在命令行程序异常死机后继续运行?谢谢!

[更新]:是的,主进程正在写入命令行正在读取的文件,但它是一个普通文件,而不是管道。我收到一个段错误。

我很难重现这个错误,因为子进程不会经常崩溃。但它确实发生了。随机崩溃是命令行程序中的一个已知错误,这就是为什么即使命令行死了我也要让我的主程序保持事件状态。

最佳答案

在你的真实代码中你有一个 else 吗:

if (pid == 0) {
int rc = execv("command line program...", argv);
// possibly more child stuff
}
else {
// parent stuff
}

在这里提问时发布真实代码总是一个好主意。

关于c++ - 如果父/子异常退出,则使 fork 进程保持事件状态 (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5969418/

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