在Linux中在运行时重定向FIFO

时间:2017-01-24 14:10:31

标签: c++ linux ipc

我正在尝试使用POSIX IPC在Linux下在C ++中实现运行时可重新配置的IPC。在当前配置中,我有一个进程A通过FIFO与进程B进行通信。进程B从FIFO中获取数据,进行一些修改并通过另一个FIFO将它们发送到另一个进程C.这是一个图形表示: 1

然后,在运行时我想杀死进程B,并且能够允许进程A通过B和C之间的FIFO发送数据:

2

我该怎么做?

1 个答案:

答案 0 :(得分:0)

如果您终止进程,则其打开的文件描述符全部关闭。因此,如果你杀死B,这将导致FIFO上的EOF,如C所示。但是,如果你有一个命名的FIFO在B关闭后仍然存在,C可以继续读取与FIFO相关的文件描述符,尽管它会立即连续返回EOF,直到另一端重新打开。

另一种选择是让B将其输出发送回A,然后将该输出转发给C.这样,它将始终控制发送到C的内容,并且C不必担心其FIFO被关闭,重新打开。