問題タブ [sigchld]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - SIGCHLDによって中断されないpythonselect
私は次のコードを持っています:
私のプログラムがこれを待っている間、シグナル(SIGCHLDなど)がある場合、selectはselect.errorで中断されます。ただし、select?に入る前に保留中のシグナルがある場合でも、これが機能するかどうかはわかりません。(connection_fdソケットはブロッキングに設定されています)。
保留中のシグナルがあるのにselectが中断されない可能性はありますか?
unix - ゾンビ プロセス、SIGCHLD、UNIX での終了
子からのすべての出口 (_exit または exit) は、SIGCHLD をその親に送信しますか?そうである場合、ゾンビ プロセスはどのように作成されますか?待機システム コールは、通常、SIGCHLD ハンドラで呼び出されます。
c - BSD で sigtimedwait() を使用して SIGCHLD をキャッチする
FreeBSD で sigtimedwait() を使用して SIGCHLD シグナルをキャッチするのに問題があります。次のソースは Debian GNU/Linux 7 でうまく動作しますが、FreeBSD 9.1 では一時的に利用できないリソースを提供してくれます。
Linux での出力:
FreeBSD での出力:
signal() を使用すると BSD で問題なく動作しますが、これは私が望むものではありません。私は何が欠けていますか?
c - SIGCHLD がキャッチされない
次のコードは、親プロセスが 10 秒間スリープしている間に、子プロセスとして "sleep 3" を fork して実行することを意図しています。親プロセスは、「スリープ 3」が終了した 3 秒後に SIGCHLD を受け取ることを期待しています。
これは起こらず、代わりに次のようになります。
ps -ef
を示しています
続いて:
次の 7 秒間 (この時点で親プロセスは終了します)。
問題は、clean_up_child_process
決して呼び出されないことです。
私が犯した間違いは何ですか?
ゾンビテスト.c:
java - Java シグナル チェーン
Process
Linuxでネイティブにプロセスを実行する 特殊なタイプのクラスを持つプログラムがあります。
プロセスの特別な処理を行う必要があるため、Java のProcessクラスはまったく使用しません。SIGCHLD
このため、プロセスがいつ終了するかを認識できるように、 用の独自のシグナル ハンドラもインストールします。
ただし、Runtime.exec()
コードに呼び出しを追加しただけで、 の独自のシグナルハンドラーがインストールされSIGCHLD
ているようSIGCHLD
です。oracleからのシグナルチェーンの指示に従いましたが、同じ問題が発生し、SIGCHLD
.
したがって、基本的な質問は次のとおりですSIGCHLD
。Java でチェーンすることは可能ですか?
c - SIGCHLD を送信する子プロセス
シグナルの処理とプロセスを理解しようとしています。複数の子プロセスを作成した親プロセスがあります。親プロセスには、すべての子プロセスのリストがあります。子が終了したら、リストから削除したい。子供が解雇されると、彼SIGCHLD
は親に送っていることを私は知っています。OK、ここがトリッキーな部分です。どうすれば、その子が終了したのか、停学になったのか、それとも何か他のことなのかを知ることができますか?
c - SIGTSTP と SIGCHLD の関係は何ですか
それぞれに 2 つのハンドラー (SIGTSTP、SIGCHLD) があります。SIGTSTP を使用してプロセスを一時停止すると、SIGCHLD のハンドラー関数も実行されます。これを防ぐにはどうすればよいですか。
シグナルハンドラ:
Susp_Bg_Pid は、一時停止されたプロセス ID を保存するために使用されます。
susp は、親プロセスが中断されているかどうかにかかわらず、親プロセスを「スマッシュ」する状態を示します。