gpt4 book ai didi

c - 让 popen 和 SIGCHLD 处理程序并行工作

转载 作者:行者123 更新时间:2023-11-30 15:44:49 24 4
gpt4 key购买 nike

在我们的代码库中,我们有一部分软件允许运行任意数量的外部程序并通过使用 fork() 和安装 SIGCHLD 处理程序来监视其退出代码。在单元测试用例中,这个软件运行良好。

但是,运行此 fork “服务器”的进程也在多个线程中运行一堆软件模块。不幸的是,这个(较旧的)软件的某些部分正在使用 popen() ,它似乎需要使用自己的 SIGCHLD 处理程序。我们看到的结果是程序在调用 pclose() 时失败,并出现 errno ECHILD。

有没有办法并行使用 SIGCHLD 处理程序和调用 popen/pclose?

最佳答案

fork()之后,信号处理程序被继承。因此,也许您应该在调用旧版软件之前,通过在第一个子进程中使用带有 SIG_DFL 的 signal() 将它们重置为 fork() 和 exec() 之间的默认值。

关于c - 让 popen 和 SIGCHLD 处理程序并行工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19317284/

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