$$が親プロセスと同じIDを返すのはなぜですか?

ルアンハオ

Bashに問題があり、その理由がわかりません。
シェルの下に、私は入ります:

echo $$    ## print 2433
(echo $$)  ## also print 2433
(./getpid) ## print 2602

「getpid」は、次のように現在のpidを取得するCプログラムです。

   int main() {
    printf("%d", (int)getpid());
    return 0;
   }

私を混乱させるのはそれです:

  1. 「(コマンド)」はサブプロセスだと思います(私は正しいですか?)。そのpidは親のpidとは異なるはずですが、同じです。なぜ...
  2. プログラムを使用して括弧の間にpidを表示すると、表示されるpidが異なりますね。
  3. '$$'はマクロのようなものですか?

手伝って頂けますか?

チェプナー

$$親のプロセスIDをサブシェルで返すように定義されています。「特別なパラメータ」の下のマニュアルページから:

$シェルのプロセスIDに展開されます。()サブシェルでは、サブシェルではなく、現在のシェルのプロセスIDに展開されます。

ではbash4、あなたはと子プロセスのプロセスIDを取得することができますBASHPID

~ $ echo $$
17601
~ $ ( echo $$; echo $BASHPID )
17601
17634

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

id(id)とid(id(id))が常に同じ値を返すのに、id(id(id(id(id))))が3つの値を「ループ」するのはなぜですか?

分類Dev

プログラムが同じ文字を返すのはなぜですか?

分類Dev

Angular、なぜ子コントローラーが親と同じスコープを持つのですか?

分類Dev

IDが同じなのに `is`がFalseを返すのはなぜですか?

分類Dev

このElasticSearchスキャンとスクロールが同じスクロールIDを返し続けるのはなぜですか?

分類Dev

スクリプトでプログラムを実行すると、rand()が同じ値を返すのはなぜですか?

分類Dev

親の死が子プロセスを殺すのはなぜですか

分類Dev

親と同じ名前のスコープ変数を使用すると、親の値が更新されるのはなぜですか?

分類Dev

Pythonサブプロセスを使用する場合、Ctrl-Cがkill -2と同じ動作を生成しないのはなぜですか?

分類Dev

MySQLでCHARとVARCHARが同じ長さを返すのはなぜですか?

分類Dev

$ {$#}がシェルで$$と同じ結果を返すのはなぜですか?

分類Dev

AngularJS関数からboolを返すことがプロパティと同じではないのはなぜですか?

分類Dev

topとpsが同じプロセスに対して異なるPIDを表示するのはなぜですか?

分類Dev

length(column)とlengthb(column)が同じ長さを返すのはなぜですか?

分類Dev

A * SearchがUniformCostSearchと同じ拡張スペースを返すのはなぜですか?

分類Dev

ストアドプロシージャが0と選択したIDを返すのはなぜですか?

分類Dev

「子」プロセスが親の前に終了するのはなぜですか?

分類Dev

std :: cbeginがstd :: beginと同じタイプを返すのはなぜですか

分類Dev

プールが同じ数のプロセスよりも遅いのはなぜですか

分類Dev

同じプログラムがWindowsとMacで異なる動作をするのはなぜですか

分類Dev

xyplot()とdotplot()が同じ引数で異なるプロットを生成するのはなぜですか?

分類Dev

同じ名前の複数のプロセスが表示されるのはなぜですか

分類Dev

Pythonのthreading.identはLinuxのプロセスIDと同じですか?

分類Dev

なぜ私の監督者は同じプロセスをたくさん作成するのですか?

分類Dev

GetProcessImageFileNameがプロセスのアドレスではなくnullを返すのはなぜですか?

分類Dev

プロセスが空のプロセスIDを埋めないのはなぜですか

分類Dev

jUnitのassertEqualsとassertSameが同じクラスの2つのインスタンスに対して同じ結果を返すのはなぜですか?

分類Dev

docker-composeを使用するDockerコンテナーでPythonプロセスの親pidが0になることがあるのはなぜですか?

分類Dev

親がJavaでstdout / stderrを使用しないとプロセスがハングするのはなぜですか?

Related 関連記事

  1. 1

    id(id)とid(id(id))が常に同じ値を返すのに、id(id(id(id(id))))が3つの値を「ループ」するのはなぜですか?

  2. 2

    プログラムが同じ文字を返すのはなぜですか?

  3. 3

    Angular、なぜ子コントローラーが親と同じスコープを持つのですか?

  4. 4

    IDが同じなのに `is`がFalseを返すのはなぜですか?

  5. 5

    このElasticSearchスキャンとスクロールが同じスクロールIDを返し続けるのはなぜですか?

  6. 6

    スクリプトでプログラムを実行すると、rand()が同じ値を返すのはなぜですか?

  7. 7

    親の死が子プロセスを殺すのはなぜですか

  8. 8

    親と同じ名前のスコープ変数を使用すると、親の値が更新されるのはなぜですか?

  9. 9

    Pythonサブプロセスを使用する場合、Ctrl-Cがkill -2と同じ動作を生成しないのはなぜですか?

  10. 10

    MySQLでCHARとVARCHARが同じ長さを返すのはなぜですか?

  11. 11

    $ {$#}がシェルで$$と同じ結果を返すのはなぜですか?

  12. 12

    AngularJS関数からboolを返すことがプロパティと同じではないのはなぜですか?

  13. 13

    topとpsが同じプロセスに対して異なるPIDを表示するのはなぜですか?

  14. 14

    length(column)とlengthb(column)が同じ長さを返すのはなぜですか?

  15. 15

    A * SearchがUniformCostSearchと同じ拡張スペースを返すのはなぜですか?

  16. 16

    ストアドプロシージャが0と選択したIDを返すのはなぜですか?

  17. 17

    「子」プロセスが親の前に終了するのはなぜですか?

  18. 18

    std :: cbeginがstd :: beginと同じタイプを返すのはなぜですか

  19. 19

    プールが同じ数のプロセスよりも遅いのはなぜですか

  20. 20

    同じプログラムがWindowsとMacで異なる動作をするのはなぜですか

  21. 21

    xyplot()とdotplot()が同じ引数で異なるプロットを生成するのはなぜですか?

  22. 22

    同じ名前の複数のプロセスが表示されるのはなぜですか

  23. 23

    Pythonのthreading.identはLinuxのプロセスIDと同じですか?

  24. 24

    なぜ私の監督者は同じプロセスをたくさん作成するのですか?

  25. 25

    GetProcessImageFileNameがプロセスのアドレスではなくnullを返すのはなぜですか?

  26. 26

    プロセスが空のプロセスIDを埋めないのはなぜですか

  27. 27

    jUnitのassertEqualsとassertSameが同じクラスの2つのインスタンスに対して同じ結果を返すのはなぜですか?

  28. 28

    docker-composeを使用するDockerコンテナーでPythonプロセスの親pidが0になることがあるのはなぜですか?

  29. 29

    親がJavaでstdout / stderrを使用しないとプロセスがハングするのはなぜですか?

ホットタグ

アーカイブ