0

运行以下 C 代码会导致程序挂起,并且不响应信号(包括 CTRL-C)。

int main()
{
    pthread_exit(0);
    return 0;
}

知道为什么吗?

当其他线程已创建并正在运行时,这种行为是正常的,但我想知道在使用 pthread_exit(0) 之前是否总是需要检查它。

编辑:这是挂起的完整代码。但是,我是用 glib (-lglib-2.0) 构建的。简单地使用 cc -o foo foo.c 可以按预期工作。

4

1 回答 1

0

pthread_exit 手册页的注释中描述了您的整个用例。在您的情况下,当您正确编辑您的 OP 时,glib 开始了另一个线程。您退出了主线程,而另一个线程继续运行。您将此标记为挂起。一般来说,如果你想完全退出应用程序,只需使用或从.exitmain()

只有当你需要额外的魔法(很少)像分离线程时,才pthread_exit()在主线程上使用。

于 2016-05-19T12:53:24.730 回答