GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Welcher Linux-Systemaufruf wird vom Befehl ls in Linux verwendet, um den Ordner-/Dateinamen anzuzeigen?

Bei den meisten Systemaufrufen gibt es Rauschen vom Laden gemeinsam genutzter Bibliotheken beim Start. Die interessanten Dinge passieren hier:

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)  

Der openat(2) Systemaufruf wird verwendet, um das aktuelle Verzeichnis zu öffnen ("." ) relativ zum aktuellen Arbeitsverzeichnis (die AT_FDCWD Flagge). Die O_DIRECTORY Flag zeigt an, dass es das Verzeichnis öffnen und den Inhalt des Verzeichnisses lesen möchte.

Die eigentlichen Verzeichnisdaten werden mit getdents(2) gelesen Systemaufruf. In diesem Fall wurde es zweimal aufgerufen, da bis zur Rückgabe von 0 nicht sicher ist, ob weitere Daten vorhanden sind oder nicht. Schließlich wird der Dateideskriptor geschlossen, nachdem er fertig ist.

Wenn Sie jedoch Ihr eigenes Programm schreiben würden, würden Sie diese nicht direkt aufrufen – stattdessen würden Sie opendir(3) verwenden , readdir(3) , und closedir(3) ein Verzeichnis lesen. Sie sind portabel (POSIX-kompatibel) und isolieren Sie von den Details der zugrunde liegenden Systemaufrufe. Sie sind meiner Meinung nach auch einfacher zu verwenden.


Linux
  1. So verwenden Sie den Tar-Befehl unter Linux

  2. Wie lösche ich ein Verzeichnis und einen Ordner in Linux?

  3. Wesentliche Beispiele für den Dateibefehl in Linux

  4. 9 Nützliche Beispiele für den Split-Befehl in Linux

  5. Welcher Befehl in der Linux/UNIX-sh-Shell gibt mein aktuelles Verzeichnis zurück?

Fsck-Befehl unter Linux (Dateisystem reparieren)

Verzeichnis in Linux entfernen – So löschen Sie einen Ordner von der Befehlszeile aus

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So verwenden Sie den fd-Befehl auf einem Linux-System

Der Linux-Befehl zum Suchen des Verzeichnisses:Erklärt

So verwenden Sie den which-Befehl in Linux