c++ - POSIX - pthread_kill()?

标签 c++ multithreading pthreads

为什么这个线程在我杀了它之后还继续执行??

pthread_t pid;
pthread_create(&pid, NULL, (func)countdown, NULL);
pthread_kill(pid, 1);
pthread_join(pid, NULL);

最佳答案

pthread_kill 是一个向线程发送信号的函数。你目前正在向它发送信号 1 ,即 SIGHUP .请求或强制终止的标准信号是 SIGTERMSIGKILL , 这是 159分别。

此外,您应该使用常量而不是魔数(Magic Number)来发送信号。这些在 signal.h 中定义. signal documentation将为您提供更多详细信息。

更新:Per nos 的评论,终止线程(而不是整个应用程序)的正确方法是使用 pthread_cancel . pthread_kill的用法假设接收线程没有注册信号处理程序,我上面描述的往往会终止整个进程。

关于c++ - POSIX - pthread_kill()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947430/

相关文章:

java - 在另一个图像中搜索图像的算法。 (拼贴画)

objective-c - 如何在macOS的非主线程上发生事件循环?

multithreading - Tir 与其他 Lua Web 框架相比如何?

c - 检索sizeof(buff)时c程序崩溃

c++ - 如何查找在 QtDialog 中选择的文件总数?

c++ - 使用分配器的 new 和 delete 等同于什么?

C++ 部分填充的动态数组

java - 为什么Java的HashTable是同步的?

c++ - 尝试将整数强制转换为 void 以按值传递给 pthread 函数

c++ - 获取错误 : ‘this’ is unavailable for static member functions even when function is not static