linux 为什么后台进程stdin链接在终端上?

daupos2t  于 2023-06-29  发布在  Linux
关注(0)|答案(1)|浏览(112)

当我开始

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
他在后台,我在终端上写的东西不会被注意到

um6iljoc

um6iljoc1#

为什么后台进程stdin链接在终端上?
没有特别的理由说明为什么不应该这样做。除非其标准流被显式重定向,否则进程将从启动它的进程继承它们。例如,当该进程是在终端中运行的交互式 shell 时,这些流通常与终端相关联。
为什么后台进程stdin链接在终端上?
将进程置于后台并不会解除它与其控制终端的关联,也不会断开或重定向其标准流。相反,它是关于当进程试图与连接到终端的流交互时会发生什么,以及终端驱动程序生成的信号去哪里。后台进程将其stdin连接到终端并不罕见。
他在后台,我在终端上写的东西不会被注意到
是的,这是“在后台”的实际含义中的一个很大的部分。但请注意,该进程可以切换到前台,之后它将消耗来自终端的输入。将stdin连接到终端并不一定意味着可以使用通过终端提供的输入。

相关问题