PSkocik Asked: 2019-01-31 12:23:35 +0800 CST2019-01-31 12:23:35 +0800 CST 2019-01-31 12:23:35 +0800 CST 直接与间接背景儿童的阅读行为 772 当我做 ( sleep 1; read x ; echo x=$x; echo done ) & 然后使用默认终端设置,作业被停止SIGTTIN。 如果我做 ( ( sleep 1; read x ; echo x=$x; echo done ) & ) 里面的read系统调用read得到EOF(返回0)`并且不会发生SITTIN停止。 这些行为的解释是什么 shell terminal 1 个回答 Voted Best Answer mosvy 2019-01-31T12:57:59+08:002019-01-31T12:57:59+08:00 这是因为在第二种情况下,后台命令将在子shell中运行,并且由于子shell中没有作业控制,后台模式将通过重定向输入/dev/null并忽略SIGINTandSIGQUIT信号来伪造。 另请参阅这些答案: subshell奇怪行为的后台进程 脚本启动的进程没有收到 SIGINT ` (sleep 123 &)` 是否从 bash 的作业控制中删除进程组? 进程在后台启动之前被杀死
这是因为在第二种情况下,后台命令将在子shell中运行,并且由于子shell中没有作业控制,后台模式将通过重定向输入
/dev/null
并忽略SIGINT
andSIGQUIT
信号来伪造。另请参阅这些答案:
subshell奇怪行为的后台进程
脚本启动的进程没有收到 SIGINT
` (sleep 123 &)` 是否从 bash 的作业控制中删除进程组?
进程在后台启动之前被杀死