で指さない私はsetsid
で走り、次のようにバックグラウンドで実行するべきプロセスのpidを取得しようとしていた。
test.sh:
#/bin/bash
setsid nohup ./my_program &
echo $!
私は./test.sh
を実行する場合には、my_program
プロセスのpidを印刷し、それはですまさに私が必要なものです。実行した場合しかし、これは、このように私のシェルで一つずつコマンド:
$ setsid nohup ./my_program &
$ echo $!
それは私にsetsid
コマンドのPIDを与える(または何か他のものかもしれないが、それはほとんど常にmy_program
マイナス1のPIDを私に与えます) 。
ここで何が起こっているか私が自分でターミナルで実行したコマンドの結果がtest.sh
スクリプトの結果と異なるのはなぜですか?
Btwは、私がsetsidで始まったプロセスの簡単な方法を知っていて、私はバックグラウンドで実行する必要がありますか?
おそらくsetsidのフォーク動作と関係がありますか?プロセスグループのリーダーであるかどうかだけをフォークします。 [ここ](http://stackoverflow.com/a/9685973/1735215)を参照してください。 – 0range
setsidを介して実行されるプロセスのPIDを取得するには、[this](http://stackoverflow.com/a/19767312/1735215) – 0range
@ 0rangeええ、私は最初のリンクが私が必要としていたものと思う。どうもありがとう!私はそれを受け入れることができるようにこれを答えとして書いてください。 – PepeHands