假设我通过popen
(只读)从流程 PA 生成流程 PO。然后我pclose()
将管道放在 PA 一侧。
在 PO 方面,我如何确定stdout是否仍然可用而不执行write()
?
请注意,我曾尝试在 PO 方面捕获 SIGPIPE,但无济于事。
更新:我尝试使用fstat(1, &buf)
但没有成功。
更新:我需要通过 PO 检测这种情况的原因是我无法从 PA 访问 PO 的 PID(因此无法杀死它)。此外,我希望 PO 在 PA 的失败(即自行退出)时更加稳健。
解决方案:我继续使用socketpair
,fork
. 试图控制一个过程popen
被证明是一场噩梦(至少对我来说)。 非常感谢所有做出贡献的人!