我知道如何使用 kill(pid_t pid, int sig)
函数向 C 中的子进程发送信号。向线程发送信号怎么样?是否可以?。如果是这样,如何在“子”线程上捕获信号。例如,如果主线程向我发送终止信号,我如何在另一个线程中捕获它。
最佳答案
对于 POSIX 线程,您具有函数 pthread_cond_wait
和 pthread_cond_signal
。
int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex)
int pthread_cond_signal(pthread_cond_t *cond)
收到信号的线程应该阻塞在 pthread_cond_wait
调用上,直到另一个线程使用 pthread_cond_signal
发送信号,并使用相同的条件变量。
考虑到将信号传递给进程的类比,这有点不同,因为发出信号的线程已经暂停执行以等待信号,这与简单地被中断并继续运行的进程不同。
关于c - 向 C 中的 pthreads 发送和捕获信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4208929/