我正在執行一個處理SIGPIPE並通過管道輸出更多的進程。 當我按q更多的退出,但進程正在運行,因爲SIGPIPE處理。當管道故障錯誤時,CPU使用率增加
從按q的時間開始,CPU使用率增加,達到〜70%。
可能有人請告訴什麼是在CPU使用率增加背後的原因
我正在執行一個處理SIGPIPE並通過管道輸出更多的進程。 當我按q更多的退出,但進程正在運行,因爲SIGPIPE處理。當管道故障錯誤時,CPU使用率增加
從按q的時間開始,CPU使用率增加,達到〜70%。
可能有人請告訴什麼是在CPU使用率增加背後的原因
這是可能的方案只是它的工作(忽略寫的返回值(2)),因爲如果它被稱爲與>/dev/null而不是更多。然而,它也有可能在SIGPIPE的接收中故意進入無限循環。沒有辦法告訴你是否不透露該程序是什麼。
道德故事:SIGPIPE正是爲了這個場景,一個像更多(或更少,最好是)的尋呼機退出,告訴輸出生成程序也退出,因爲沒有人會再讀。
您是否使用過像gdb這樣的調試器,或者只是使用'strace'或'ltrace'來查找? – 2012-03-01 11:56:54