signal(SIGPIPE, SIG_IGN)
當服務器close一個連接時,若client端接着發數據。根據TCP 協議的規定,會收到一個RST響應,client再往這個服務器發送數據時,系統會發出一個SIGPIPE信號給進程,告訴進程這個連接已經斷開了,不要再寫了。
根據信號的默認處理規則SIGPIPE信號的默認執行動作是terminate(終止、退出),所以client會退出。若不想客戶端退出可以把SIGPIPE設爲SIG_IGN
如: signal(SIGPIPE,SIG_IGN);
這時SIGPIPE交給了系統處理。
服務器採用了fork的話,要收集垃圾進程,防止殭屍進程的產生,可以這樣處理:
signal(SIGCHLD,SIG_IGN); 交給系統init去回收。
這裏子進程就不會產生殭屍進程了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
centos創建應用快捷方式文件的語法
以下是在創建應用程序桌面快捷方式文件的內容要求: [Desktop Entry] 文件頭 Encoding 編碼格式 Name 應用名稱 Name[xx] 不同語言的應用名稱 Comment 描述 E