Linux
Ctrl+C 可以向多個程序發送 SIGINT 信號嗎?
我已經讀到,當您按
Ctrl
+時,將向前台程序組C
發送 一個信號。SIGINT
你能給我一個例子,說明如何在前台程序組中擁有兩個或更多程序,因為我想看看如果我按
Ctrl
+是否所有程序都會終止C
。
由於新程序都屬於同一個程序組,即父程序的程序組,因此讓一個程序啟動一堆程序(
fork
),然後使用適當的日誌記錄和延遲,鍵入Ctrl
+C
。他們都吃一個SIGINT
。$ perl -E 'fork for 1..2;say "ima $$"; $SIG{INT}=sub{die "woe $$\n"}; sleep 999' ima 80920 ima 80922 ima 80921 ima 80923 ^Cwoe 80920 woe 80922 woe 80921 woe 80923 $
(添加
strace
orsysdig
或諸如此類以查看所涉及的系統呼叫或信號。)
管道是一項工作,具有多個程序:
(cat ; echo foo >&2) | (cat ; echo bar >&2 )
如果你用
Ctrl
+結束輸入D
,你會得到foo
和輸出,如果你用+終止bar
管道,則兩者都不會列印。Ctrl``C