アプリケーションがを実行し、子が(に失敗したために)でfork()
死亡した場合、親プロセスは?を受け取りますか?abort()
assert()
SIGCHLD
関連する場合、これはDebian 4(gccバージョン4.1.2)にあります。
同じことを確認したい場合は、子を fork し、子が abort() を呼び出すサンプル コードを記述します (sigabrt シグナルを発生させるため)。strace で出力を確認します。(strace 実行可能ファイル)
次のコードの場合:
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid;
if(pid=fork()<0)
{
fprintf(stderr,"Error in forking");
}
else if(pid==0)
{
/*The child*/
abort();
}
else {
waitpid(pid,(int *)0,0);
}
return 0;
}
私はこの出力を得ます:
--- SIGCHLD (Child exited) @ 0 (0) ---
gettid() = 4226
tgkill(4226, 4226, SIGABRT) = 0
--- SIGABRT (Aborted) @ 0 (0) ---
+++ killed by SIGABRT +++
したがって、少なくともUbuntuディストリビューションでは、答えはイエスです。