2008-09-25 27 views
2

我正在使用当前创建后台线程(PTHREAD_DETACHED)并调用pthread_exit(0)的多线程程序(使用pthreads)。我的问题是,过程就列为“停业”,并好奇地不似是“确实存在”在/ proc(这违背了我的调试策略)什么使pthread失效?

我想下面需要满足的要求:

  • 程序应该在一个循环和函数B运行功能的一次
  • 给定的程序的PID的/ proc/$ PID/EXE,/ PROC/$ PID /地图和/ PROC/$ PID/FD必须可访问(当进程停止时,它们全部是空的或无效的链接)
  • 必须像通常一样使用CTRL + C和CTRL + Z暂停/中断程序

编辑:我毫不犹豫地改变程序的界面对于具有在“主”线程和B中产生的线程(它们是目前在其他的方式)。它会解决问题吗?

回答

2

您可以暂停等待信号中的主流程的执行,或者不分离线程(使用默认PHTREAD_CRATE_JOINABLE)等待其与pthread_join()终止。

1

是否有一个原因,你不能做其他事情:让主线程运行循环,并在后台线程中执行一次性任务?

+0

如果能解决这个问题,我会面临重组软件的挑战,以便完成它。实际上,这是我第一次真正接触pthreads。 – PypeBros 2008-09-25 08:51:28

0

不是最优雅的设计,但也许你可以用退出前阻塞主线程:

while(1) { 
     pause(); 
} 

然后你就可以安装SIGINT和SIGTERM打破循环的信号处理程序。最简单的方法是:exit(0):-)。

相关问题