我正在使用当前创建后台线程(PTHREAD_DETACHED)的多线程程序(使用pthread),然后调用pthread_exit(0)。我的问题是,这个过程被列为“已经不存在”,好奇地似乎并没有在/ proc中“真正存在”(这会破坏我的调试策略)
我希望满足以下要求:
编辑:我犹豫是否更改了程序的界面,在“主”线程中有A,而在生成的线程中有B(它们目前是另一种方式)。它会解决这个问题吗?
答案 0 :(得分:2)
您可以暂停等待信号的主进程的执行,也可以不使用pthread_join()
分离线程(使用默认的 PHTREAD_CRATE_JOINABLE )等待终止。
答案 1 :(得分:1)
有没有理由你不能反过来做事:让主线程运行循环,并在后台线程中执行一次性任务?
答案 2 :(得分:0)
不是最优雅的设计,但也许你可以在退出之前阻止主线程:
while(1) {
pause();
}
然后你可以为SIGINT和SIGTERM安装一个打破循环的信号处理程序。最简单的方法是:退出(0): - )。