进程退出并对线程产生影响

时间:2014-03-27 11:13:13

标签: c++ linux unix process operating-system

在维护中,我看到项目代码(在Linux上的c/c++中)调用libc exit函数,以防出现一些不可恢复的错误。但是,此进程终止调用用于跨多个线程(每个线程面临不可恢复的方案时)。现在 -

  • 可以从主线程以外的线程调用进程exit而没有任何副作用。
  • 每当调用exit时(在主线程或任何其他线程中),它是否保证线程的正常退出。

我理解标准(手册页)对此保持沉默,最好的方法是,启动所有线程的正常终止并使用通知机制,必须通知main线程以便正常终止。但是,由于它是一个正在维护的项目,因此想要在更改之前检查当前行为是否正确。

我面临的问题是,我可以看到随机崩溃,其中一个线程处于exit调用执行的正当进程之下。

1 个答案:

答案 0 :(得分:1)

对于第一个问题,当您调用exit(来自任何线程,主要或孩子)时,该过程会立即退出。

关于第二个问题,请参阅上面的答案。简而言之,没有。线程不会“优雅地”退出(无论如何从应用程序的角度来看)。