Shell
直接與間接背景兒童的閱讀行為
當我做
( 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中執行,並且由於子shell中沒有作業控制,後台模式將通過重定向輸入
/dev/null
並忽略SIGINT
andSIGQUIT
信號來偽造。另請參閱這些答案: