我有一个父进程,它启动一个子进程(使用fork),不断向std :: cout输出大量数据。
这个孩子创建了大量的数据,所以我想要不断地调用read(),这样我就可以得到这些数据(如果管道变满,孩子会阻塞,根据文档)。我也希望在超时后对孩子进行嘲笑。
为了实现上述目标,父节点将分叉另一个基本上调用 sigtimedwait 的子节点,并在超时时间内终止第一个子进程。同时,父母将调用read()来获取第一个孩子的数据。
这很有效,除了一个大问题,当超时(在超时过程中)和发出sigkill时,父进程在read()函数调用中始终被阻止! (我认为这是因为管道没有关闭)
我有两个问题。
谢谢!