在运行线程程序并使用 反复杀死主程序时Ctrl + C,我在第二次运行时看到程序中出现意外结果。但是,如果我让程序运行并自愿退出,则没有问题。
所以,我的疑问是,是否Ctrl + C也与主进程一起杀死线程?
提前致谢。
在多线程编程中,信号被传递到单个线程(通常在没有特定信号被阻塞的线程中不可预测地选择)。然而,这并不意味着默认行为是终止进程的信号只会终止一个线程。事实上,没有杀死整个进程的情况下,没有办法杀死单个线程。
只要您保留SIGINT终止进程的默认操作,只要至少有一个线程SIGINT未阻塞,它就会这样做。只要至少有一个线程解除阻塞,哪个线程解除阻塞并不重要,因此在应用程序背后创建线程的库代码应该始终在调用之前阻塞所有信号,然后pthread_create在调用线程中恢复信号掩码。