問題タブ [process-group]
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.
linux - 「kill 0」と「kill -- -$$」の違いは何ですか?
基本的に、bash スクリプト プロセスが を受け取ったときに、SIGINT
終了する前にすべてのサブプロセスを強制終了する必要があります。私はhereを読んで、次の行に沿って何かを使用しました:
私も使用するために読んだkill 0
:
それらの違いは何ですか? また、次の要件を満たしていますか (そうでない場合は何をしますか?)。
- それ自体とその子のみを強制終了します (端末コマンドによって開始された最上位プロセスであると仮定します)。
- 同じシェルスクリプトの他のプロセスやインスタンスを強制終了することはありません (別の端末コマンドから実行します。つまり、実行中
./foo.sh &
に./foo.sh
2 番目のプロセスを強制終了しても、同じ tty 内であっても最初のプロセスは強制終了されません)。
bash - 呼び出されたスクリプトに「trap 'echo ignore' USR1」がありますが、呼び出しスクリプトが強制終了されるのはなぜですか?
次の 2 つの bash スクリプトがあるとします。
/tmp/トラッパー:
/tmp/usr1er:
trapper は USR1 をトラップし、単純に無視することになっています。usr1er を起動し、USR1 シグナルでそのプロセス グループを強制終了します。ここで、インタラクティブ シェルからスクリプトとして trapper を起動すると、usr1er が強制終了され、正常に終了します。
試してみると$(/tmp/trapper)
、シェル全体が終了します。同様に、次のように を呼び出す別のスクリプトを作成すると、次/tmp/trapper
のようになり/tmp/outer
ます。
「到達した外側の終わり」を出力せずに強制終了されます。
なんで?
go - Go の os.StartProcess が子のプロセス グループ ID を子 pid と同じに設定するのはなぜですか
フォーク後に子プロセスでgolang ライブラリ関数os.StartProcess()
が呼び出されます。setpgid(0,0)
「linux」および「bsd」構成でこれを行います。ソースは次のとおり です 。 pkg/syscall/exec_linux.go?h=SYS_SETPGID#L117
以前、OSX Foundation ライブラリ メソッドが同じことを行っていることに気付きましたNSTask - (void)launch
(文書化されていません)。当時は、プロセスのツリーを管理するのが難しくなるので、面倒に思えました。
これらのライブラリがこれを自動的に行う利点は何ですか?
c - シグナルハンドラの pgid が実際の pgid と異なります
メインプログラムの pgid と pgroup を STDIN に設定する次の簡単なプログラムがあります。次に、現在のプロセスの pgid とシグナルの送信元プロセスの pgid を出力するシグナル ハンドラーがあります。これが私のコードです
ただし、^Cを押すと、得られる出力は
プログラムはメインプログラムで実行されており、信号も同じソースから送信されているため、それらは同じであるはずではありませんか?
bash - bash trap '' vs シグナルを渡すトラップ関数
トラップを使用して子プロセスにシグナルを転送することについて混乱しています。2 つのスクリプトがあるとします。
灰
b.sh
を実行a.sh
して別のウィンドウからプロセス グループを強制終了するとkill -- -PGID
、SIGTERM は無視され、に渡されませんb.sh
。しかしtrap cleanup SIGTERM
、そうすると、SIGTERM は通過して終了しますb.sh
。トラップが信号を渡す場合と渡さない場合があるのはなぜですか?
linux - 識別子 PID、PPID、SID、PGID、UID、EUID は何を意味しますか?
配属されました
次の識別子 PID、PPID、SID、PGID、UID、EUID を出力する C プログラムを作成します。
割り当ては、次に尋ねました
各識別子を表すものは何ですか?
プログラムを完了しましたが、識別子の適切な説明が見つかりませんでした。
- 彼らは本当に何を表していますか?
- 特に、SID および PGID 識別子の目的は何ですか?