GNU/Linux >> Tutoriales Linux >  >> Linux

¿Qué llamada del sistema Linux utiliza el comando ls en Linux para mostrar el nombre de la carpeta/archivo?

La mayoría de las llamadas al sistema tienen ruido debido a la carga de bibliotecas compartidas al inicio. Las cosas interesantes suceden aquí:

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)  

El openat(2) La llamada al sistema se utiliza para abrir el directorio actual ("." ) relativo al directorio de trabajo actual (el AT_FDCWD bandera). El O_DIRECTORY bandera indica que quiere abrir el directorio y leer el contenido del directorio.

Los datos reales del directorio se leen usando el getdents(2) llamada del sistema. En este caso lo llamó dos veces, ya que hasta que no devuelve 0 no se sabe si hay más datos o no. Finalmente, el descriptor de archivo se cierra después de que se hace.

Sin embargo, si tuviera que escribir su propio programa, no los llamaría directamente; en su lugar, usaría opendir(3) , readdir(3) y closedir(3) para leer un directorio. Son portátiles (compatibles con POSIX) y lo aíslan de los detalles de las llamadas al sistema subyacentes. También son más fáciles de usar, en mi opinión.


Linux
  1. Cómo usar el comando Tar en Linux

  2. Linux:¿la barra inclinada (/) forma parte del nombre del directorio raíz de Linux?

  3. Ejemplos esenciales del comando de archivo en Linux

  4. 9 ejemplos útiles del comando Split en Linux

  5. ¿Qué comando en el shell sh de Linux/UNIX devuelve mi directorio actual?

Comando Fsck en Linux (Sistema de archivos de reparación)

Eliminar directorio en Linux:cómo eliminar una carpeta desde la línea de comandos

Ver el contenido de un archivo en la línea de comandos de Linux

Cómo usar el comando fd en el sistema Linux

El comando find Directory de Linux:Explicación

Cómo usar el comando which en Linux