Linux

Ctrl+C 可以向多個程序發送 SIGINT 信號嗎?

  • January 31, 2020

我已經讀到,當您按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
$ 

(添加straceorsysdig或諸如此類以查看所涉及的系統呼叫或信號。)

管道是一項工作,具有多個程序:

(cat ; echo foo >&2) | (cat ; echo bar >&2 )

如果你用Ctrl+結束輸入D,你會得到foo和輸出,如果你用+終止bar管道,則兩者都不會列印。Ctrl``C

引用自:https://unix.stackexchange.com/questions/365463