【发布时间】:2015-09-28 14:44:12
【问题描述】:
我正在 Linux 上运行一个用 C 语言编写的多线程应用程序。
要停止执行,我发送SIGINT 并从信号处理程序调用一些清理例程,最后调用exit(0)。
当处理程序执行清理例程时,其他线程是否仍在运行或可能运行(上下文切换)?
【问题讨论】:
-
您不想在信号处理程序中调用
exit(),因为它不受异步信号安全的保证。请致电_exit()。或者更好的是根本不从信号处理程序结束程序,而是通过让所有线程正常结束来执行优雅关闭。供参考:man7.org/linux/man-pages/man7/signal.7.html
标签: c linux multithreading pthreads signals