我有以下shell交互:
[OP@localhost linux]$ tty
/dev/pts/7
[OP@localhost linux]$ stty tostop
[OP@localhost linux]$
在另一个终端中,我输入:
[OP@localhost linux]$ echo hello > /dev/pts/7
回到原来的,我看到:
[OP@localhost linux]$ tty
/dev/pts/7
[OP@localhost linux]$ stty tostop
[OP@localhost linux]$ hello
为什么是这样?不应该停止回显过程吗?
这是
termios(3)
手册页所说的:您的
echo
进程[1] 不是后台进程,并且不会尝试写入其控制 tty。还要注意“进程组”位;像
SIGTTIN
,SIGTTOU
,SIGINT
等这样的作业控制信号被发送到整个进程组/作业,而不仅仅是有罪进程;在类似的管道中foo | bar &
,两者都foo
将bar
被停止。[1] 实际上,
echo
是一个内置的shell,它不作为一个单独的进程运行。