这是我在这里的第一个问题(您可能从下面 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);