运行以下C代码会导致程序挂起,并且不会响应信号(包括CTRL-C)。
int main()
{
pthread_exit(0);
return 0;
}
知道为什么吗?
当其他线程已经创建并且正在运行时,行为是正常的,但我想知道在使用pthread_exit(0)之前是否总是要检查它。
编辑: 这是挂起的完整代码。但是,我正在用glib(-lglib-2.0)构建。使用简单的cc -o foo foo.c按预期工作。
答案 0 :(得分:0)
pthread_exit man page的笔记中描述了您的整个用例。
在您的情况下,当您正确编辑OP时,glib启动了另一个线程。您退出主线程,另一个线程继续运行。你把它标记为挂起。
通常,如果您要完整退出应用程序,只需使用exit
或从main()
返回即可。
只有当你需要额外的魔法(很少)像分离的线程时,在主线程上使用pthread_exit()
。