我有一個程序,其中:推理PTHREAD問題()
- 具有主螺紋(1),其啓動服務器螺紋(2)和另一個(4)。
- 服務器線程(2)執行accept(),然後創建一個新線程(3)來處理連接。
在某些時候,線程(4)執行一個fork/exec來運行另一個應該連接到線程(2)正在監聽的套接字的程序。有時這會失敗或者花費時間過長,並且診斷極其困難。如果我對系統進行strace,看起來fork/exec已經工作,接受已經發生,新的線程(4)已經創建..但是在那個線程中沒有任何反應(使用strace -ff,相關pid的文件是空白的)。
任何想法?
你的主線程(1)在創建(2)和(4)後做了什麼?它是永遠等待(2)還是等到某種狀況? – Los 2009-09-11 18:13:06
(1)進入並等待鍵盤輸入(使用與readline非常相似的東西),它形成命令,通過鎖定的隊列移交給(4)。 – pjc50 2009-09-14 09:51:21