我以前程序A运行的时候,通过QT中QProcess->write()等指令,调用程序B,当时运行一切正常。
然后近期更改了程序框架结构,程序A里面使用了线程和select来及时获取串口数据,本以为一切正常,但是,此后的测试发现,QProcessl里面对应的语句并不执行了。
然后,屏蔽保留QProcess->write()函数,但是没有屏蔽线程,运行程序A,如果通过终端输入同样指令,让程序B运行,则程序B会阻塞住。直到程序A退出后大概2分钟,程序B才会继续运行。我通过top,也看到程序B运行,并占用CPU,但是终端上停滞和阻塞了。
当然如果程序A没有启动,直接运行程序B,是没有问题的。
此问题的原因是什么?怎么跟踪调试?