- 论坛徽章:
- 0
|
我在AIX5.3上有个程序,主进程有一个线程,线程中屏蔽了ctrl+c信号,问题出现在,如果我主进程中sleep一段时间,主进程可以被ctrl+c信号停掉,但是如果主进程内没有sleep,主进程也不能被ctrl+c信号停止。请哪位高人指教一下,万分感谢啊
程序如下:
#include <pthread.h>
#include <unistd.h>
#include <signal.h>
void Wait ()
{
pthread_mutex_t mutex;
pthread_mutex_init(&mutex, 0);
pthread_mutex_lock(&mutex);
pthread_cond_t cond;
pthread_cond_init(&cond, 0);
pthread_cond_wait(&cond, &mutex);
}
extern "C" void* ThreadRun(void* arg)
{
sigset_t mask;
sigemptyset(&mask);
sigaddset(&mask, SIGINT);
pthread_sigmask(SIG_BLOCK, &mask, MULL);
Wait();
return 0;
}
int main()
{
pthread_attr_t attr;
pthread_attr_init(&attr);
pthread_t threadId;
pthread_create(&threadId, &attr, ThreadRun, NULL);
sleep(1); // 问题就出自这里,此时主进程sleep一秒,主进程可以被ctrl+c停住,
// 但是,如果注释掉本行,即主进程中没有sleep,那么主进程不能被ctrl+c停掉
Wait();
return 0;
} |
|