GNU/Linux >> Linux の 問題 >  >> Linux

フォルダ/ファイル名を表示するためにLinuxのlsコマンドで使用されるLinuxシステムコールはどれですか?

ほとんどのシステム コールは、起動時に共有ライブラリをロードすることによるノイズです。ここで興味深いことが起こります:

openat(AT_FDCWD, ".", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
getdents(3, /* 2 entries */, 32768)     = 48
getdents(3, /* 0 entries */, 32768)     = 0
close(3)  

openat(2) システム コールを使用して、現在のディレクトリを開きます ("." ) 現在の作業ディレクトリ (AT_FDCWD 国旗)。 O_DIRECTORY フラグは、ディレクトリを開いてディレクトリの内容を読み取ることを示します。

実際のディレクトリ データは、getdents(2) を使用して読み取られます。 システムコール。この場合、0 が返されるまで、さらにデータがあるかどうかわからないため、2 回呼び出されています。最後に、ファイル記述子は完了後に閉じられます。

ただし、独自のプログラムを作成する場合は、これらを直接呼び出すのではなく、代わりに opendir(3) を使用します。 、 readdir(3) 、および closedir(3) ディレクトリを読み取る。それらは移植可能 (POSIX 準拠) であり、基礎となるシステム コールの詳細から隔離されます。また、IMO の方が使いやすいです。


Linux
  1. Linuxでディレクトリとフォルダを削除する方法は?

  2. Linux –スラッシュ(/)はLinuxルートディレクトリの名前の一部ですか?

  3. 現在のディレクトリを返す Linux/UNIX sh シェルのコマンドはどれですか?

  1. LinuxでTarコマンドを使用する方法

  2. Linuxでのファイルコマンドの基本的な例

  3. LinuxでのSplitコマンドの9つの便利な例

  1. Linuxでファイルまたはディレクトリを削除(削除)する方法

  2. Linuxファイルシステムの概要

  3. Linuxでmd5sumコマンドを使用する方法