在Linux / Unix中,当后台模式中的进程尝试从stdin读取时,它将被终止。导致终止的原因是什么?没有核心文件。所以看起来终止不是通过产生核心的信号来实现的。
答案 0 :(得分:0)
终止的一个原因可能是信号。
当进程没有直接连接到tty设备时,stdin / stdout通常用管道处理。 pipe(7) man page说:
如果所有引用管道读取端的文件描述符都已关闭,那么
write(2)
将导致为调用进程生成SIGPIPE
信号。
但是,这仅适用于写作。
阅读,
如果所有引用管道写入端的文件描述符都已关闭,那么从管道中尝试
read(2)
将看到文件结束(read(2)
将返回0)。< / p>
当程序无法读取任何内容时,很可能决定终止。 (它还能做什么?)