ホームページ  >  記事  >  システムチュートリアル  >  Linux シェルとプロセス

Linux シェルとプロセス

WBOY
WBOYオリジナル
2024-06-12 22:46:30677ブラウズ

Linux之shell 和进程

最初にここでいくつかのコマンドを実行します:

ログインプロセスのIDを出力します(ログインして終了するまで常に存在します)

リーリー

ログインプロセスによってフォークアウトされたシェルプロセスを出力します(ログインして終了するまで常に存在します)

リーリー

上記のコマンドからわかるように:

ログインプロセス ID は 3411 で、bash シェルのサブプロセス 3412 を作成します。今後のスクリプトの実行、

3412 ここではこれをメイン シェルと呼び、スクリプトを処理するサブシェル プロセスを開始します。

(注: bash では、サブシェル プロセスの PID は特別な変数「$$」に格納され、PPID にはサブシェルの親プロセスの ID が格納されます。)

検証するために 2 つの小さなプログラムを書いてみましょう:

george.guo@ls:~$ 猫 Yes.c

リーリー

george.guo@ls:~$ 猫テスト

リーリー

実行結果は以下の通りです:

george.guo@ls~$ ./はい

リーリー

yes プロセスの親プロセス ID は 3412 であることがわかります。これは、ログイン プロセス フォークとメイン シェルの bash シェル子プロセスです。

だからです

yes はメインシェルによって実行されます。はい プロセス ID は 6080、呼び出しシステム、フォーク、サブシェル ID は 6081 です。

システムコールの場合:

system() を使用してコマンドを実行するには、少なくとも 2 つのプロセスを作成する必要があります。 1 つはシェルを実行するためのもの (ここでは ID は 6081)、

残りの 1 つ以上は、シェルによって実行されるコマンドに使用されます (ここにはサブシェルがあり、スクリプト テスト自体です)。

スクリプトテスト自体のプロセスIDは6082です。

以上がLinux シェルとプロセスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。