我正在Linux上编写一个C程序,其中我有一个main()和两个由它创建的线程。在其中一个p线程中,我调用了accept()函数。我有一个信号处理程序,它在接收到SIGINT、SIGQUIT或SIGTERM时被调用。我的期望是,因为我正在使SA_RESTART标志为零,当我按ctrl-c时,accept()函数应该返回EINTR而不是重新启动,但是我在调试过程中通过一系列printf调用(通过打印代码所在的位置来查看执行哪些行);if (sigaction(SIGQUIT, &signal_action, N
*/ if (errno == EINTR)当它收到信号时,我希望它能尽快优雅地停止。因为我有一个阻塞接受调用,所以没有循环在浪费CPU周期,这是很好的,而且信号可以在任何时候中断阻塞接受并导致循环终止。问题是,正如代码中的注释所示,信号可以在while条件之后传递,但可以在接收调用之前传递。然后信号处理程序将finished设