标签:没有 断线 nal 信号量 表示 val 处理 ret style
int pthread_kill(thread_t tid, int sig);
#include <pthread.h> #include <signal.h> int sig; pthread_t tid; int ret; ret = pthread_kill(tid, sig);
pthread_kill() 将信号 sig 发送到由 tid 指定的线程。tid 所指定的线程必须与调用线程在同一个进程中。sig 参数必须来自 signal(5) 提供的列表。
向指定ID的线程发送sig信号如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。
pthread_kill(threadid, SIGKILL)也一样,杀死整个进程。
如果要获得正确的行为,就需要在线程内实现signal(SIGKILL,sig_handler)了。
所以,如果int sig的参数不是0,那一定要清楚到底要干什么,而且一定要实现线程的信号处理函数,否则,就会影响整个进程。
OK,如果int sig是0呢,这是一个保留信号,一个作用是用来判断线程是不是还活着(将执行错误检查,但并不实际发送信号。此错误检查可用来检查 tid 的有效性。)。
pthread_kill() 在成功完成之后返回零。其他任何返回值都表示出现了错误。如果出现以下任一情况,pthread_kill() 将失败并返回相应的值。
EINVAL
描述:
sig 是无效的信号量。
ESRCH
描述:
当前的进程中找不到 tid。
标签:没有 断线 nal 信号量 表示 val 处理 ret style
原文地址:https://www.cnblogs.com/tianzeng/p/9192738.html