在后台启动进程时,fd0设置为什么?

米兰·哈拉波斯

通常fd0 == stdin。但是,当进程在后台启动并且fd0再次归终端所有时,那么在该后台进程中设置了什么呢?后台进程如何接受输入?(如果没有重定向)

巴尔玛

FD 0被定义为标准输入,无论连接到什么。

无论进程是在前台运行还是在后台运行,它都会从其父级继承所有描述符。因此,当没有重定向时,FD 0将连接到终端。

但是,终端设备具有前台进程组,并且仅允许该组中的进程读取输入。实施作业控制的Shell将每个作业放入不同的进程组,并将终端的前台进程组设置为前台进程组。这样的结果是,如果后台进程尝试从终端读取,它们将被停止。

如果stty tostop后台进程尝试写入终端,您还可以使用它们来停止后台进程。如果您不希望后台进程的输出干扰您在前台所做的工作,则这很有用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章