pthread_kill(0,0) 崩溃

pthread_kill(0,0) 崩溃

这是我在这里的第一个问题(您可能从下面 GDB 输出的糟糕格式中看出来:^},这可能不是正确的论坛?...

使用 Ubuntu 14.04,调用 pthread_kill(0,0) 会导致 SIGSEGV。手册页说 pthread_kill() 可用于确定线程是否存在。我一定是遗漏了一些非常基本的东西。我理解 pthread_t 的实际定义/格式/结构是不透明的(取决于操作系统),但似乎这应该有效,最坏的情况下会返回 ESRCH。请纠正我。详情如下:

int
main (int arcg, char *argv[])   
{
    pthread_kill((pthread_t)0,0);
    return 0;
}

gcc -g -pthread test_pthread_kill.c -otest_pthread_kill

test_pthread_kill

Segmentation fault (core dumped)

答案1

使用pthread_create(&tid,...),您将获得一个合法的pthread_t值来传递。或者使用您自己的 tid:

pthread_kill(pthread_self(),0);

相关内容