Bashに問題があり、その理由がわかりません。
シェルの下に、私は入ります:
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
「getpid」は、次のように現在のpidを取得するCプログラムです。
int main() { printf("%d", (int)getpid()); return 0; }
私を混乱させるのはそれです:
手伝って頂けますか?
$$
親のプロセスIDをサブシェルで返すように定義されています。「特別なパラメータ」の下のマニュアルページから:
$シェルのプロセスIDに展開されます。()サブシェルでは、サブシェルではなく、現在のシェルのプロセスIDに展開されます。
ではbash
4、あなたはと子プロセスのプロセスIDを取得することができますBASHPID
。
~ $ echo $$
17601
~ $ ( echo $$; echo $BASHPID )
17601
17634
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加