我正在编写一个程序,需要执行其他外部进程;目前该程序通过popen启动进程的命令行,获取任何输出,然后通过pclose获取退出状态。
然而,对于运行速度快的进程(例如,启动的进程很快出错),pclose调用无法获取退出状态(pclose返回-1,errno为ECHILD)。
有没有一种方法可以模拟popen/pclose类型的行为,但以保证捕获进程结束“事件”和结果返回代码的方式?如何避免pclose和启动进程的终止之间固有的竞争条件?
然而,对于运行速度快的进程(例如,启动的进程很快出错),pclose调用无法获取退出状态(pclose返回-1,errno为ECHILD)。
有没有一种方法可以模拟popen/pclose类型的行为,但以保证捕获进程结束“事件”和结果返回代码的方式?如何避免pclose和启动进程的终止之间固有的竞争条件?