SIGCHLD訊號使用和注意事項

2021-08-25 14:24:08 字數 804 閱讀 4626

sigchild是指在乙個程序終止或者停止時,將sigchild訊號傳送給其父程序,按照系統預設將忽略此訊號,如果父程序希望被告知其子系統的這種狀態,則應捕捉此訊號。注意:sigcld訊號與其長得非常相似。sigcld是系統v的乙個訊號名,其語義與名為sigchld的bsd訊號不同。posix.1則採用bsd的sigchld訊號。bsd的sigchld訊號語義與其他訊號的語義想類似。子訊號狀態改變後產生此訊號,父程序需要呼叫乙個wait函式以確定發生什麼。

1.子程序已終止 cld_exited

2.子程序異常終止(無core) cld_killed

3.子程序異常終止(有core) cld_dumped

5.子程序已停止 cld_stoped

6.停止的子程序已經繼續 cld_continued

7.子程序處在停止態,接受到sigcont後喚醒時

當阻塞於某個慢系統呼叫的乙個程序捕獲某個訊號且響應訊號處理函式返回時,該系統呼叫可能返回eintr錯誤;

在乙個程序終止或者停止時,將sigchld訊號傳送給其父程序。按系統預設將忽略此訊號。如果父程序希望被告知其子系統的這種狀態,則應捕捉此訊號。訊號的捕捉函式中通常呼叫wait函式以取得程序id和其終止狀態。

sigchld的訊號處理函式必須正確編寫,應使用waitpid函式來避免留下殭屍程序。

// 訊號處理函式

void sig_handler(int signo)

} if(master::instance()->reload_child(fpids) != error_ok)

}

參考:

Protocol Buffers使用注意事項

protocol buffers做為廣泛使用的乙個序列化開源庫,提供了很多語言下的支援,本文就談談msvc c 使用pb遇到的問題,當然這些問題因為每個人的使用模式不同,可能都不一樣,本文也不討論怎麼寫proto及編譯。我們使用pb做序列化可以把pb生成靜態庫或者動態庫 libprotobuf.dl...

C using namespace使用注意事項

一 using 用法 1.引用命名空間。如 using system 2.自動釋放物件使用的資源。如 using sqlconnection connection new sqlconnection connectionstring connection.open 當鏈結使用完畢以後,將自動釋放sq...

strcmp和switch函式使用注意事項

使用strcmp函式比較兩個字串時,比較的是字串的ascs表大小 按ascii順序字串 abc 小於 abc,所以下面程式輸出應該是 yes include int main 使用switch case函式 要注意switch後面不能加分號 case 與後面的字元要有空格,首先要對變數進行定義。在s...