【发布时间】:2019-09-02 21:11:25
【问题描述】:
如果父进程和子进程通过管道通信,如果父进程在子进程写入管道并死亡后从管道读取会发生什么?
【问题讨论】:
如果父进程和子进程通过管道通信,如果父进程在子进程写入管道并死亡后从管道读取会发生什么?
【问题讨论】:
当孩子死亡时,它的管道末端会自动关闭。父母会在阅读完孩子死前写的所有内容后阅读 EOF,就像客户端显式调用 close() 一样。
请注意,父级只能读取实际已写入管道的数据。如果子进程正在执行缓冲输出(使用stdio 时的默认设置),则应用程序写入的所有数据在它终止时可能不在管道中。当进程调用exit() 时,Stdio 缓冲区会自动刷新,但如果它因信号而死,则不会调用它。
【讨论】: