|
我有一个button,connect控制一个slot,在这个slot里我的代码是这样的
void closeForm::tppaintformslot()
{
tppaintform.show();
printf("before send signal\n");
kill(parapid, SIGUSR1);
printf("after send signal\n");
}
之后,我有一个子进程函数:
int flag;
void parainput()
{
int m=5;
int n;
signal(SIGUSR1, kinal);
printf("recieve signal!!!\n");
for(int i=0; i<m; i++)
{
n=qblock-i*50;
printf("n is %d\n",n);
sleep(3);
signal(SIGUSR1, kinal);
printf("recieve signal!!!\n");
printf("@^_^@killsignal is %d\n",flag);
printf("one loop id end !!!\n");
}
}
void kinal(int sig) //重载这个信号
{
flag = 1;
printf("*^_^*killsignal is %d\n",flag);
}
现在的问题是,每次一运行,如果我点击这个,终端会出现
recieve signal!!!
@^_^@killsignal is 0
one loop id end !!! //这个是我子进程在收到信号之前的显示,killsignal 是0
before send signal // 发射信号
*^_^*killsignal is 1 //信号的重载函数里输出
recieve signal!!!
@^_^@killsignal is 1 //子进程就监测到了,killsignal 是1了
one loop id end !!!
用户定义信号 1
[ztt@localhost mode8.3]$ recieve signal!!! //这个时候我的界面就死在那里了
@^_^@killsignal is 1
one loop id end !!!//这样循环就结束了,界面自己关掉了
而且就停止在这里,什么都没有了,好郁闷,各位大侠帮我看看是哪里的错呀?我以前不用QT的时候用kill signal是可以的,现在就不可以了,为什么?是connect和slot的原因吗?我该怎么做呀!!!!!!!!!~>_<~ |
|