linux signal函式問題

2022-01-03 17:47:41 字數 2285 閱讀 1574

1樓:匿名使用者

測試了一下,三個程序都會收到sigint訊號。

原程式中,child1, child2都收到sigint訊號,呼叫stop(), 之後被喚醒,列印"child process ... is killed by parent!",事實上kill這兩個child的不是parent,是它們自己的sigint。

放到①處,child1收到sigint訊號,預設的行為是把自己殺了,當然也來不及列印任何東西了。child2收到sigint訊號,打斷waiting(),列印"child process 2 ...",然後退出。

殺死它的也不是sigusr2訊號。

放到②處,child1, child2收到sigint訊號,預設的行為是立即把自己殺了,也來不及列印任何東西了。

測試方法:

// 列印誰執行、被什麼訊號打斷

static void stop(int signal)

// 在parent程序中,列印各程序id

printf("parent %d, child1 %d, child2 %d\n",getpid(),p1,p2);

如果讓parent成為殺死child的**,可以在child1,child2中加入:

signal(sigint, keep_me_alive);

// 不理睬sigint訊號

static void keep_me_alive(int signal)

這時列印結果就一樣了

請參考,希望能幫到你。

2樓:匿名使用者

sigaction函式是posix下用來傳遞複雜的訊號引數,signal是這個的linux簡化版本

原型:sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)

詳見linux.die.net/man/2/sigaction,或者rtfm

linux c signal函式的一點疑惑。

3樓:不屑寵兒

if(signal(sigtstp, sig_ign) == sig_dfl)

signal(sigtstp, sig_tstp);

參考apue就知道,這樣的寫法其實挺常見的,這是signal函式的一個問題,必須在設定的時候才能知道當前的狀態。這個函式的意思是不是用ctr + z預設方式,而使用自己的處理函式。而只有在job-control的時候,這個訊號才是sig_dfl,也就是說只有在這個情況你才需要控制這個訊號。

linux環境下使用signal函式進行程序間通訊的問題

4樓:匿名使用者

測試了一下,三個程序都會收到sigint訊號。

原程式中,child1, child2都收到sigint訊號,呼叫stop(), 之後被喚醒,列印"child process ... is killed by parent!",事實上kill這兩個child的不是parent,是它們自己的sigint。

放到①處,child1收到sigint訊號,預設的行為是把自己殺了,當然也來不及列印任何東西了。child2收到sigint訊號,打斷waiting(),列印"child process 2 ...",然後退出。

殺死它的也不是sigusr2訊號。

放到②處,child1, child2收到sigint訊號,預設的行為是立即把自己殺了,也來不及列印任何東西了。

測試方法:

// 列印誰執行、被什麼訊號打斷

static void stop(int signal)

// 在parent程序中,列印各程序id

printf("parent %d, child1 %d, child2 %d\n",getpid(),p1,p2);

如果讓parent成為殺死child的**,可以在child1,child2中加入:

signal(sigint, keep_me_alive);

// 不理睬sigint訊號

static void keep_me_alive(int signal)

這時列印結果就一樣了

linux 環境下的c語言, 關於 kill 傳送訊號和 signal() 函式, 具體問題在以下**的註釋處

5樓:匿名使用者

pause()會令目前的程序暫停(進入睡眠狀態), 直到被訊號(signal)所中斷。

當50訊號觸動了,pause將退出睡眠狀態,執行printf和return

對數函式的問題,對數函式問題

1.過定點 2,1 形如y logax a 0切a 1 的對數函式形式恆過定點 1,0 則有y loga 2x 3 過 1,0 而y loga 2x 3 1相對y loga 2x 3 在座標軸上下移一個單位 即過 2,1 x g x 的公共定義域為 1,1 f x g x loga 1 x loga...

python函式定義問題,python函式定義的語法問題

def world def is sort for define not del def def world print some python函式定義的語法問題 此類 出現於字尾為pyi的註釋檔案中,用於提示函式的引數和返回值例如def keygen username str str 表示函式ke...

EXCEL函式問題

如果你是excel2007及以上版本,在e2輸入 a2 1 首次借用 yyyy m d 如果是03版本,則在e2輸入 a2 1 首次借用 a2 1 yyyy m d 向下複製即可。謝謝採納哦,親 e2 if countifs a 2 a2,a2,b 2 b2,b2 1,max a1 a 2 a2 b...