为什么这个线程在我杀了它之后还继续执行??
pthread_t pid;
pthread_create(&pid, NULL, (func)countdown, NULL);
pthread_kill(pid, 1);
pthread_join(pid, NULL);
最佳答案
pthread_kill
是一个向线程发送信号的函数。你目前正在向它发送信号 1
,即 SIGHUP
.请求或强制终止的标准信号是 SIGTERM
和 SIGKILL
, 这是 15
和 9
分别。
此外,您应该使用常量而不是魔数(Magic Number)来发送信号。这些在 signal.h
中定义. signal documentation将为您提供更多详细信息。
更新:Per nos 的评论,终止线程(而不是整个应用程序)的正确方法是使用 pthread_cancel
. pthread_kill
的用法假设接收线程没有注册信号处理程序,我上面描述的往往会终止整个进程。
关于c++ - POSIX - pthread_kill()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947430/