当我开始
bash test.sh &
ps
457349 pts/5 00:00:00 bash
458609 pts/5 00:00:00 sleep
458656 pts/5 00:00:00 ps
1107610 pts/5 00:01:47 zsh
lsof -p 457349
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 457349 pk 0u CHR 136,5 0t0 8 /dev/pts/5
bash 457349 pk 1u CHR 136,5 0t0 8 /dev/pts/5
bash 457349 pk 2u CHR 136,5 0t0 8 /dev/pts/5
为什么后台进程stdin链接在终端上?
0u - /dev/pts/5
他在后台,我在终端上写的东西不会被注意到
1条答案
按热度按时间um6iljoc1#
为什么后台进程stdin链接在终端上?
没有特别的理由说明为什么不应该这样做。除非其标准流被显式重定向,否则进程将从启动它的进程继承它们。例如,当该进程是在终端中运行的交互式 shell 时,这些流通常与终端相关联。
为什么后台进程stdin链接在终端上?
将进程置于后台并不会解除它与其控制终端的关联,也不会断开或重定向其标准流。相反,它是关于当进程试图与连接到终端的流交互时会发生什么,以及终端驱动程序生成的信号去哪里。后台进程将其stdin连接到终端并不罕见。
他在后台,我在终端上写的东西不会被注意到
是的,这是“在后台”的实际含义中的一个很大的部分。但请注意,该进程可以切换到前台,之后它将消耗来自终端的输入。将stdin连接到终端并不一定意味着可以使用通过终端提供的输入。