• 5167阅读
  • 0回复

qte 使用system() 函数问题!! [复制链接]

上一主题 下一主题
离线ketiy2004
 

只看楼主 倒序阅读 楼主  发表于: 2010-08-18
我在GUI 进程中创建了一个线程,使用QThread 类创建,run的实现如下:
MyThread::run()
{
    int sval = 0;

    while(1)
    {
         qDebug("wait sem----------");
        sem_wait(sem_KeypressEventFromClint);     //等待其他进程发来的消息

        sem_getvalue(sem_KeypressEventFromClint,&sval);
        qDebug("sem value = %d\n",sval);
    }
}
程序运行时,调试信息显示:wait sem---------- 这时候应该没问题;


然后我在GUI 进程的  
Desktop::keyPressEvent(QKeyEvent *event)

    switch(event->key())
    {

        case Qt::Key_K:
            qDebug("key press K");
            system("echo $PWD");
        break;
     }

我按K键,调用system()函数:我没有发送sem_post(sem_KeypressEventFromClint); 的消息;
现在问题来了:
        调试结果显示:程序有发了一次sem_KeypressEventFromClint消息的动作(不知道哪来的,我发这个消息的程序这时还没让它执行呢!);

并且这消息动作,有时候有,有时候又没有!!!

请问各位大虾,这是怎么回事?


我又做了个测试:
把system("echo $PWD"); 改为 fork + execl ,程序不会出现上述的异常!!!
快速回复
限100 字节
 
上一个 下一个