2016-04-15 4 views
5

シェル(例:bash)が実行可能ファイルを呼び出すと、最初にfork、次にそのコピーexecve実行可能ファイルが呼び出されます。組み込みコマンドはシェルでどのように実装されていますか?

シェルが組み込みコマンドを呼び出すと、新しいプロセスは作成されず、execveは実行可能ファイルに対してのみ動作し、組み込みコマンドは実行可能ファイルには格納されません。

組み込みコマンドはどのように格納され、どのようにシステムコールの観点から呼び出されますか?

+0

この質問は、組み込みコマンドが外部実行可能ファイルと同様に「起動」されたと期待していることを示しています。どうして?それらは組み込みです。 –

+4

すべての質問/回答に下降音があります。それはなぜですか? – pfnuesel

+0

Builtinsは実行可能ファイルに格納され、bashと呼ばれます。 – 123

答えて

1

「組み込みコマンド」は、外部プログラムを実行する必要がないことを意味します。だから、いいえ、execveはまったく関与していません。いいえ、必ずしもシステムコールが必要ではありません。あなたのシェルは実際にはコマンド文字列を解析し、 "ちょっと、それは組み込みコマンドだ、これとその関数を実行しよう"と思う。

+0

ha!最初の1つ:) –

+1

ハァッ、なぜdownvote? –

1

シェル関数と同じであると想像できます。

外部プロセスを起動する代わりに、シェルは入力を読み込んで結果を出力する内部関数ライブラリ関数を呼び出し、通常のプログラムの主な機能とほとんど同じことをします。

0

シェルプロセス自体は組み込み関数を処理するだけで、その結果として自身またはその環境を変更する可能性があります。まったくシステムコールがないかもしれません。

+1

hm、downvoteはどこから来ますか?この答えはここで与えられたものと同じです。 –

関連する問題