[4] プログラムの開始に失敗したり、 wait(2)
でエラーが発生したりすると、 -1 が返されます >>1。
$! に理由が設定されます >>1。
$? は -1 になるようです >>1。
[5] プログラムの実行開始後、シグナルにより終了した場合、
$? の下位7ビットがシグナルに設定されます >>1, >>8。
$? の8ビット目が core dump の有無に設定されます >>1, >>8。
[6] プログラムの実行開始後、正常に終了した場合、
終了コードが $? の9ビット目以上に設定されます >>1, >>7, >>8。