在进程终止时哪个先发生?删除子进程和任务或调用 atexit 函数?

On process termination which happens first? Child processes and tasks deletion or calling of atexit functions?

我想知道当一个进程正常终止时,下面哪一个先发生:

  1. 子进程终止。
  2. 调用使用 atexit 注册的清理函数。

如果进程中没有写特殊代码,atexit()函数会先运行。内核只会在最终程序终止时考虑子项,这取决于进一步的情况,它可能会终止子项。