ホームページ >運用・保守 >Linuxの運用と保守 >Linuxのforkとexecの違いは何ですか
Linux における fork と exec の違い: 1. fork は子プロセスと呼ばれる新しいプロセスを作成するために使用され、exec は現在のプロセスのすべての内容を指定されたプログラムに置き換えます。 after exec プロセス ID は変更されていませんが、fork によって子プロセスが再作成された後に ID が変更されました。
#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。
fork と exec はどちらもプロセス関連の呼び出しです。
fork
fork関数を呼び出すと子プロセスと呼ばれる新しいプロセスが作成され、fork関数を呼び出したプロセスを親プロセスと呼びますが、子プロセスの内容はpcd(プロセス制御モジュール)を除いて親プロセスと同じです。どちらのプロセスもメモリに書き込みを行っていない場合、fork 関数を呼び出したプロセスのメモリページを 2 つのプロセスで共有することになるので、一見 fork で作成したプロセスの方が exec で作成したプロセスよりも速いように見えますが、 2 つのプロセスのいずれかがメモリを変更する限り、変更の前に、 はメモリ ページを子プロセスにコピーします。プロセスの作成は実際にプロセスを作成するのではなく、より正確に言うと、実行可能ファイルをロードすることです。exec を呼び出した後、exec で指定された実行可能ファイルは、exec を呼び出すプロセスのスペースと、exec を呼び出すプロセスのメモリにロードされます。
違い
fork は、主に Linux で新しいプロセス (スレッド) を作成するように設計されています。 ) 一連の関数は、現在のプロセスすべてを指定されたプログラムに置き換えるのに使用されます。したがって、exec() 一連の関数は、最初の 3 つの関数を使用して新しいプログラム実行環境を確立した後に呼び出されることがよくあります。 init プロセスを使用して他のプロセスを開始する Linux のプロセスは、通常次のようになります。
fork は最も単純な呼び出しであり、パラメーターは必要ありません。子プロセスを作成し、そのための独立したスペースを作成するだけです。親プロセスの。 fork 関数を使用して新しいプロセスを作成した後、多くの場合、新しいプロセスで exec 関数を呼び出して別のプログラムを実行します (たとえば、プログラムを作成するときは、以前に作成したプログラム、この方法で実行可能プログラムを直接呼び出すと、プログラムを大幅に簡素化できます)。プロセスが exec 関数を呼び出すと、プロセスは完全に新しいプログラムに置き換えられます。 exec 関数の呼び出しでは新しいプロセスは作成されないため、前後のプロセスの ID は変更されません。
親プロセスは fork() によって同一の子プロセスを生成し、作成された子プロセスは exec 関数を使用して実際のプロセスを実行し、最終的に特定のタスクを実行できるプロセスになります。
プロセスが exec クラス関数を呼び出すと、プロセス自体が「終了」します。システムはコード セグメントを新しいプログラムのコードに置き換え、元のデータ セグメントとスタック セグメントを破棄し、新しいプログラムに新しいコードを割り当てます。新しいプログラム データセグメントとスタックセグメントに残るのはプロセス番号だけです つまり、システムにとっては同じプロセスですが、すでに別のプログラムです。つまり、exec ファミリ関数を呼び出した後は、後続のプログラムは実行されません。
推奨学習:
Linux ビデオ チュートリアル以上がLinuxのforkとexecの違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。