我有一个程序,其中:推理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