通常fd0 == stdin。但是,当进程在后台启动并且fd0再次归终端所有时,那么在该后台进程中设置了什么呢?后台进程如何接受输入?(如果没有重定向)
FD 0被定义为标准输入,无论连接到什么。
无论进程是在前台运行还是在后台运行,它都会从其父级继承所有描述符。因此,当没有重定向时,FD 0将连接到终端。
但是,终端设备具有前台进程组,并且仅允许该组中的进程读取输入。实施作业控制的Shell将每个作业放入不同的进程组,并将终端的前台进程组设置为前台进程组。这样的结果是,如果后台进程尝试从终端读取,它们将被停止。
如果stty tostop
后台进程尝试写入终端,您还可以使用它们来停止后台进程。如果您不希望后台进程的输出干扰您在前台所做的工作,则这很有用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句