Qt中写程序时,要到main函数中调用一个函数,或者一个线程退出时,整个进程却没有退出的情形:
int foo()
{
return 0;
}
void* myPhread(void*)
{
//do sth.
pthread_exit(0);
}
int main(int argc,char* argv[])
{
QApplication a(argc,argv);
foo();
// pthread_t tid;
//pthread_create(&tid,NULL,myPthread,NULL);
return a.exec();
}
上述程序中,无论是调用函数foo 的return; 还是线程 myPthread的 pthread_exit 后,整个进程依然没有退出,
问题原因:Qt中 a.exec()一直处于事件循环中,是不会退出程序的,所以, 需要在 程序中添加 退出进程函数exit(0);
int foo()
{
return 0;
}
void* myPhread(void*)
{
//do sth.
pthread_exit(0);
}
int main(int argc,char* argv[])
{
QApplication a(argc,argv);
foo();
// pthread_t tid;
//pthread_create(&tid,NULL,myPthread,NULL);
exit(0);//添加退出进程函数
//return a.exec();
}
错误原因:以为线程退出或者函数返回,主进程就会退出,潜意识认为是main函数是 return 0;
但Qt 函数的特殊之后,就在函数一直处于事件循环中,而不退出程序。