GNU/Linux >> Znalost Linux >  >> Linux

Které systémové volání linux používá příkaz ls v linuxu k zobrazení názvu složky/souboru?

Většina systémových volání je hlučná z načítání sdílených knihoven při spuštění. Zajímavé věci se dějí zde:

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) systémové volání se používá k otevření aktuálního adresáře ("." ) vzhledem k aktuálnímu pracovnímu adresáři (AT_FDCWD vlajka). O_DIRECTORY flag označuje, že chce otevřít adresář a přečíst obsah adresáře.

Skutečná data adresáře se čtou pomocí getdents(2) systémové volání. V tomto případě to zavolalo dvakrát, protože dokud nevrátí 0, není jisté, zda existuje více dat nebo ne. Nakonec se po dokončení zavře deskriptor souboru.

Pokud byste však měli napsat svůj vlastní program, nevolali byste je přímo – místo toho byste použili opendir(3) , readdir(3) a closedir(3) pro čtení adresáře. Jsou přenosné (vyhovující POSIX) a izolují vás od detailů základních systémových volání. Také se snáze používají, IMO.


Linux
  1. Jak používat příkaz Tar v Linuxu

  2. Základní příklady příkazu File v Linuxu

  3. 9 Užitečné příklady příkazu Split v Linuxu

  1. Jak odstranit adresář a složku v Linuxu?

  2. Linux – Je lomítko (/) součástí názvu kořenového adresáře Linuxu?

  3. Který příkaz v shellu Linux/UNIX sh vrátí můj aktuální adresář?

  1. Jak odstranit (smazat) soubor nebo adresář v Linuxu

  2. Úvod do souborového systému Linux

  3. Jak používat příkaz md5sum v Linuxu