システムコールとシェルコマンド/ユーティリティの関係

システムコールとシェルコマンド/ユーティリティの関係

POSIXでは

  1. システムコールはシェルで頻繁に実行されますが、常にコマンドやユーティリティがあるわけではありませんか?

  2. どのタイプのシステムコールに、そのコマンドまたはユーティリティがシェルにあり、どのタイプのコマンドまたはユーティリティにそのシステムコールがシェルにあるかについてのいくつかの経験則がありますか?

  3. システムコールとそのシェルコマンドまたはユーティリティに関しては、コマンドまたはユーティリティは常にシステムコールと同じ方法で実装されていますか?実装はシステムコールに基づいていますか?

ベストアンサー1

  1. システムコールはシェルで頻繁に実行されますが、常にコマンドやユーティリティがあるわけではありませんか?

時々。一般に有用なシステムコールは通常公開されます。ディレクトリを変更できないシェルはあまり役に立たないシェルではありません。そのうちのいくつか(たとえばchdir)は、それを呼び出すプロセスにのみ影響を与える可能性があるため、シェル組み込みとして実装されています。他のものは小さなプログラムの形で実装されています。そして、一部はまったく公開されません。非常にシェルから直接呼び出す理由がないので、mmapラッパーを直接作成しない限り、それを行うことはできません(とにかく役に立ちません)。

  1. どのタイプのシステムコールに、そのコマンドまたはユーティリティがシェルにあり、どのタイプのコマンドまたはユーティリティにそのシステムコールがシェルにあるかについてのいくつかの経験則がありますか?

標準的な手紙や経験則はありません。名前は何でも可能です。たとえば、rmシステムコールとして実装することもできますunlinkunlink返品これを実行しますが、ほとんどのコマンドラインオプションが不足しており、デフォルトではラッパーです。システムpipeコールとそのreadsとwritesは構文を介して公開されます|

man syscallsシステムコールのリストを提供する必要があります。

  1. システムコールとそのシェルコマンドまたはユーティリティに関しては、コマンドまたはユーティリティは常にシステムコールと同じ方法で実装されていますか?実装はシステムコールに基づいていますか?

これらのユーティリティは、実際にユーティリティがこれらのタスクを実行できる唯一の方法であるシステムコールのみを使用します。たとえば、ファイルを削除したり権限を変更したりすることはできません。いいえシステムコールメカニズムを介して直接または間接的に。

(そうでない場合はどうか想像してください。ファイルを削除したいすべてのプログラムは独自のファイルシステムドライバとハードドライブドライバを実装する必要があります。します。

おすすめ記事