日期:2014-05-16  浏览次数:20747 次

问一个关于多进程中通信产生冲突等方面的问题
一个困扰多日的问题
我做了一个qt界面的程序Q,点击上面的button之后,即fork出一个子进程,并在子进程里面调用另外一个程序(一个ip电话的程序A),然后我在父进程里面往FIFO管道的写端写入相应的命令(此命令是传给A程序的),A程序中某处加入了读管道的代码段,读到之后即继续运行……

在测试中,我用另一个程序B拨打Q所在的ip,但是Q程序却没有反应(正常情况是应该振铃,跟普通电话被拨通的反应一样),但我关掉Qt界面之后,耳机里立刻响起了巨大的振铃声
同样的道理,我点击Q程序界面上的拨打按钮,B这边也没有反应,也就是说没有拨打出去。
测试程序B是网上下载的正确程序,只是没有界面。我所调用的A程序也是将B程序修改而得,只是在其中某处将读shell得到命令改为了读管道的代码。

不知道是什么原因?尤其振铃在关掉界面后才听到的现象令我十分费解,那位朋友可以指点一下?不胜感激!

------解决方案--------------------
是不是Q被阻塞到界面某一个地方?你的响应程序在主循环中吗?

这个小问题加个打印不就找到问题了,为什么要困扰多日?