私はsystemdに切り替えたばかりで、きれいに殺されたプロセスがうまくいっていないと考えているので、しばらくこのことをやっているかもしれません。シグナルを受け取った場合、私のプログラムの終了コードはどうすればよいですか?
基本的に、私はきれい例えば(main
にバックアップ信号のコードを通すことによって)、次いでSIGHUP
、SIGINT
とSIGTERM
リッスンとreturn 128+SIGHUP
。
信号が未処理だった場合にのみ、私は、これは$?
を移入するために使用されることが期待が、今私はシェルが$?
に、このような値を与えるために責任があることを理解だと思うし、その後。信号が処理されたためにプロセスが最終的に信号を出したとしても、$?
は0
になり、信号が存在していることと関係があるというすべての証拠は失われます。そうですか?
SIGHUP
を処理しても正常に終了する場合は、return EXIT_SUCCESS
からmain
にする必要がありますか?
私はそれが依存すると思います。信号による終了がバイナリの正常な実行と見なされた場合は、はいとなります。これらの信号がエラーを示す場合は、EXIT_FAILURE。 – Hayt
@Hayt:シグナルコードをプロセス終了コードに組み込むには、何もしてはいけないということです。 –
あなたのプログラムがそのタスクで失敗したという兆候が解消されているか、ハングアップしていますか? – StoryTeller