在Linux上的线程中断系统调用

时间:2011-08-02 10:03:52

标签: linux pthreads signals interrupt system-calls

我有一个在循环中运行的pthread,以阻塞方式调用accept()。有没有办法从另一个线程中断该调用?一切都指向向线程发送信号,但显然你只能发送进程信号。

我不能只是杀死线程,因为它会使套接字保持打开状态。而且反正这不是很干净。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以使用pthread_kill(3)发送信号。

  

pthread_kill()函数将信号sig发送给另一个线程   与调用者处于同一进程中的线程。

     

如果安装了信号处理程序,则将在中调用处理程序   线程线程

注意,你不必杀死线程;您可以使用accept发送仅使EINTR失败的信号。

答案 1 :(得分:-1)

使用select(),或将信号发送到进程(如果您只想中断其中一个线程,这将是一个问题。)