Linux,C ++管道和分岔(超时和读取)

时间:2017-05-26 18:02:27

标签: c++ linux pipe fork

我有一个父进程,它启动一个子进程(使用fork),不断向std :: cout输出大量数据。

这个孩子创建了大量的数据,所以我想要不断地调用read(),这样我就可以得到这些数据(如果管道变满,孩子会阻塞,根据文档)。我也希望在超时后对孩子进行嘲笑。

为了实现上述目标,父节点将分叉另一个基本上调用 sigtimedwait 的子节点,并在超时时间内终止第一个子进程。同时,父母将调用read()来获取第一个孩子的数据。

这很有效,除了一个大问题,当超时(在超时过程中)和发出sigkill时,父进程在read()函数调用中始终被阻止! (我认为这是因为管道没有关闭)

我有两个问题。

  1. 这是在Linux中做事的正确方法,以实现我的目标吗? (即实现超时机制并从“实时”中读取数据)
  2. 如果是,我该如何解决上述问题?
  3. 谢谢!

0 个答案:

没有答案