我正在编写一个多线程程序,我想在其中处理来自用户的可能的 Ctrl-C 命令以终止执行。据我所知,不能保证能够取消每个工作线程的主线程会捕获信号。因此,是否有必要为工作线程的代码设置一个不同的信号处理程序,以便任何人都能在信号到达时捕捉到它,或者是否有另一种方法可以做到这一点,只在主线程的代码中设置一个信号处理程序?
最佳答案
您可以使用 pthread_sigmask() 阻止来自调用线程的信号。
并且,由于阻塞的信号会继承到新创建的线程,您可以在主线程中阻塞 SIGINT,然后启动其他线程,然后在主线程中取消阻塞(如果需要的话)。
关于在多线程程序中捕获 SIGINT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6250126/