我在Linux(CentOS 5.3)上有一个C++程序,它产生多个线程,这些线程处于无限循环中以执行作业并在某些时间内休眠.现在我必须取消正在运行的线程以防新的配置通知进入并重新启动新的线程集,我已经使用了pthread_cancel.我观察到的是,即使在接收到取消指示后,线程也没有停止,甚至在睡眠完成后一些睡眠线程也会出现.
由于不需要这种行为,在上述场景中使用pthread_cancel会引发关于好坏练习的问题.
请评论上述场景中的pthread_cancel用法.
我在我的程序中注册了一个信号处理程序.收到不需要的信号(SIGABRT)后,我在信号处理程序中调用'exit(-1)'退出进程.但正如在几个ocassions中注意到的那样,它调用exit()但是无法终止进程.
该问题是随机生成的,我强烈怀疑执行exit().
是否存在exit()无法终止进程的任何原因或情况.
谢谢.
我有一个应用程序,在C++中运行linux,在退出时获取中止信号.在我寻找代码来寻找问题之前,我需要知道在什么情况下我将从内核获得中止信号.这可以给我正确的调试方向.
请提及应用程序可能获得中止信号的每个可能情况.
@具体执行方案是,
TIA
是否有任何情况下,在linux上运行的应用程序(未阻止信号SIGKILL)在发出SIGKILL信号时不会被杀死?
我已经习惯exit()
了终止这个过程.我没有注册任何退出处理程序也不关心退出时刷新缓冲区,所以想到使用_exit()
更强大的方法来终止进程.
唯一的问题是,是否能正常_exit()
处理所有打开文件描述符和打开套接字的关闭?