[解決済み] なぜ$$は親プロセスと同じidを返すのですか?
2022-04-20 14:26:15
質問
Bashで問題が発生しました。
シェルで、入力します。
echo $$ ## print 2433
(echo $$) ## also print 2433
(./getpid) ## print 2602
getpid"は、現在のpidを取得するためのC言語プログラムです。
<ブロッククオート int main() {
printf("%d", (int)getpid());
return 0;
}
私が困惑するのは
- (コマンド)"はサブプロセスだと思うのですが、そのpidは親プロセスのpidと異なるはずなのに、同じになっているのはなぜでしょうか?
- 私のプログラムで括弧の間にpidを表示すると、表示されるpidが違いますが、正しいですか?
- はマクロのようなものですか?
助けてもらえますか?
解決方法を教えてください。
$$
は、サブシェル内の親のプロセス ID を返すように定義されています。マニュアルページの "Special Parameters" を参照してください。
シェルのプロセスIDに展開されます。 ()サブシェルでは、サブシェルではなく、現在のシェルのプロセスIDに展開されます。
で
bash
4で、子のプロセスIDを取得することができます。
BASHPID
.
~ $ echo $$
17601
~ $ ( echo $$; echo $BASHPID )
17601
17634
関連
-
[解決済み] '\r': command not found - .bashrc / .bash_profile [duplicate].
-
[解決済み] Cp: ターゲットはディレクトリではありません
-
[解決済み] mkdir コマンドが bash スクリプトで見つかりません。
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] あるディレクトリにあるすべてのコード行を再帰的にカウントするにはどうすればよいですか?
-
[解決済み] Git上でシェルコマンドを実行する際に使用するSSH-keyの秘密鍵を指定する方法は?
-
[解決済み] コマンドラインから .bash_profile を再読み込みする方法は?
-
[解決済み] すでに実行中のプロセスをnohup下に置くにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】予期しないトークン 'fi' 付近の構文エラー
-
[解決済み] osx find exec rm find: exec: 不明な主またはオペレータ
-
[解決済み] Cp: ターゲットはディレクトリではありません
-
[解決済み] 値がベースに対して大きすぎる(エラートークンは "08")[重複]
-
[解決済み] mkdir コマンドが bash スクリプトで見つかりません。
-
[解決済み] awkシステムコール
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] Bash - "fi ;;" の使い方は?
-
[解決済み] Grep 'binary file matches'. どうすれば正常なgrepの出力が得られるか?[重複]する
-
[解決済み] Bashスクリプトの'''抜け'''がある] [クローズド]