0

システムコールを行わないシェルコマンドを探すように言われました。私は多くのことを検索し、最終的にここで、バックエンドでシステムコールを呼び出さないLinuxシェルまたはUNIXにコマンドがあるかどうかを尋ねました。

ありがとう。

4

2 に答える 2

3

はいといいえ

はいの部分...

シェルのマクロプロセッサプログラミング言語の制御フローまたは定義を処理するシェルビルトインがいくつかあります。

本質的にシステムコールを行う必要があるビルトインはごくわずかです。一般に、シェルのメモリイメージ内で状態を変更するだけです。

ノーパート..。_ _

実際には、多数のシステムコールを実行せずに、シェルでEnterと入力することさえできません。シェルは、子が終了したかどうかを確認するためにwait(2)する場合があり、時間をチェックする場合があり、通常はプロンプトを出力します...そしてもちろん次のコマンドを読み取ります。

于 2013-01-22T17:15:37.050 に答える
1

シェルとは何か、コマンドをどのように実行するかを考えてください。

シェルはインタプリタです。大まかに言えば、単一のインタプリタループがあります

do {
   get_next_command();
   switch(next_command){
   cmd_alias: ...
   cmd_break: ...
     ...
   }
} while (true);

ここで、どのコマンドがシェルプロセスの内部構造を更新するだけで、どのコマンドがその機能を実行するためにオペレーティングシステムを呼び出す必要があるかを考えてみてください。

于 2013-01-22T17:23:09.513 に答える