爲處理SIGINT信號而創建的函數被卡在一個常量循環中。這個想法是讓父進程忽略CTRL-C,但發送給子進程(並且它們將它作爲默認進行處理)。當按CTRL-C時,會發生什麼情況,信號處理函數被調用,但陷入無限循環。 kill調用應該發送SIGTERM到進程組中的所有進程,發送進程除外。任何幫助,將不勝感激。信號處理程序函數保持循環
功能代碼爲:
void intHandler(int signum) {
kill(0, SIGTERM);
}
函數調用代碼(主)是:
(void) sigset(SIGINT, intHandler);
「發件人進程除外」 - 規範沒有這麼說。您需要阻止SIGTERM,或者從進程組中刪除進程。 – 2011-05-10 02:47:30
或在全球範圍內跟蹤孩子,明確地「殺死」孩子而不是所有進程。 IIRC,您還可以使用'sigaction'來確保父母忽略'SIGTERM'並在孩子中解除封鎖。 – 2011-05-10 02:55:58
我完成了你所說的完全符合我所需要的工作。謝謝 – zetatr 2011-05-10 03:11:01