C

向掛起的程序發送 SIGTERM

  • March 29, 2018

我有 2 個用 c 編寫的程序,我稱它們為“父”和“子”。父母創建孩子,孩子進入一個循環,在其中執行一些程式碼,然後引發 SIGSTOP。如果達到某個條件,則父需要發送子SIGTERM,否則發送SIGCONT。

如何在它被掛起時發送 SIGTERM 並獲得我想要的結果?通過簡單地發送 SIGCONT 然後 SIGTERM 恐怕孩子會在發送 SIGTERM 之前達到 SIGSTOP ,而且我還認為這兩個信號一個接一個會相互干擾。

謝謝。

如果您有一個處於暫停狀態的程序,它不會操作任何信號(除了SIGKILL),直到它繼續。掛起的信號將在程序中排隊。

因此,根據您的情況,您需要發送:

  1. SIGTERM進而SIGCONT
  2. SIGCONT

當然這可以簡化為

if (condition) { send SIGTERM }
send SIGCONT

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