Leer syscall en Linux

Leer syscall en Linux

"Como el título dice que la llamada del sistema de lectura debe estar leyendo algo desde una ubicación en particular. Linux nos proporciona la llamada del sistema de lectura para leer datos de cualquier archivo y mostrarlo en la consola, y el núcleo del sistema Linux debe estar involucrado en todo este proceso, i.mi., Para abrir el archivo, leerlo, escribir datos a otro archivo, etc. Esta guía será una ventaja para todos los usuarios de Linux y C que desee aprender a usar la llamada del sistema de lectura mientras se codifica. Antes de echar un vistazo al fragmento del código C, vamos a crear un archivo de texto y un archivo C. El archivo de texto contendrá datos de texto aleatorios que serán utilizados por la función Read (). Ambos archivos son creados por la misma consulta de "toque" una tras otra, y la consulta "LS" los muestra en una carpeta de inicio."

Hemos agregado 3 líneas de texto en el archivo de texto.archivo txt para que podamos acceder a él usando la función Read () de C. Esas 3 líneas se muestran utilizando la consulta "Cat".

Ejemplo 01

En nuestro primer ejemplo, demostraremos el uso de la llamada del sistema Read () o la función POSIX para acceder a los datos desde un archivo específico y mostrarlos en la consola. El código de ejemplo comienza con los archivos básicos de 3 encabezados. El stdio.H y unistd.Los encabezados H se utilizan para funciones mutables estándar de entrada/salida. El fcntl.H se utiliza para utilizar las funciones de lectura y escritura de Posix para crear y acceder a los archivos. El fragmento que se muestra a continuación se ha iniciado con la declaración de un búfer de caracteres de tamaño 100. Los datos de texto que se han mostrado en el archivo de texto.Se accederá y se mostrará el archivo txt de la imagen de arriba y se mostrará en fragmentos.

La instrucción printf () se utiliza 3 veces para informarnos sobre el número de caracteres totales que se obtendrán del archivo y se muestran en la consola. Tres descriptores de archivos, F1, F2 y F3, se usan por separado para llamar a la función "Open ()" de C para abrir un archivo de texto.archivo txt en modo de solo lectura utilizando la opción "O_RDONLY". Las variables N1, N2 y N3 se utilizan para obtener el resultado devuelto de llamar a la función "Leer" 3 veces, respectivamente.

Cada vez, lo hemos estado pasando como un búfer o una matriz de tipo de personaje, yo.mi., Arr, un descriptor de archivo diferente, yo.mi., F1, F2, F3 y un número diferente de caracteres a acceder desde el archivo y guardados en buffer, i.mi., 20, 40 y 60 respectivamente. Cada vez, hemos estado usando el resultado devuelto, yo.mi., n1, n2, n3, dentro de la llamada de escritura () para acceder a la variable de búfer "arr" con el primer parámetro como "1". Esta función de escritura mostraría 20, 40 y 60 caracteres después de leer desde el archivo de texto del archivo.txt en el búfer de personajes "arr". La instrucción printf () se ha utilizado cada vez para agregar un descanso de línea usando "\ n" en su área de cadena.

De esta manera, cada vez, algunos datos de texto se mostrarían en el shell después de que la función Read () acceda a él desde el archivo "TEXT -FILE.TXT."Guardemos rápidamente nuestro código antes de la compilación.

#incluir
#incluir
#incluir
int main ()
char arr [100];
printf ("Leer 20 caracteres ... \ n");
int f1 = open ("TextFile.txt ", o_rdonly);
int n1 = read (f1, arr, 20);
escribir (1, arr, n1);
printf ("\ n");
printf ("Leer 40 caracteres ... \ n");
int f2 = open ("TextFile.txt ", o_rdonly);
int n2 = read (f2, arr, 40);
escribir (1, arr, n2);
printf ("\ n");
printf ("Leer 60 caracteres ... \ n");
int f3 = open ("TEXTFILE.txt ", o_rdonly);
int n3 = read (f3, arr, 60);
escribir (1, arr, n3);
printf ("\ n");

Después de la compilación de este código con el compilador C "GCC" C, hemos probado el "./a.Comando OUT "para ejecutar el código compilado. Muestra 20, 40 y 60 caracteres del archivo de texto usando "Leer."

Ejemplo 02

Digamos que tiene datos de Below en un archivo de texto.archivo txt, y desea transferir un número exacto de caracteres a otro archivo. Para esto, utilizará la función Read () para leer los datos del archivo fuente, y la función de escritura se usará para guardarlo en el archivo de destino.

Ahora, vamos a usar los mismos encabezados que utilizamos en el ejemplo anterior para leer de un archivo a una variable de búfer. El método principal () de este código se inicializa con una matriz de 40 caracteres de tamaño "ARR."Las declaraciones de salida printf () se utilizan en cada paso para explicar todos y todos en detalle, yo.mi., La apertura de un archivo, lectura de un archivo, creando otro archivo, copiando datos del primer archivo al segundo archivo, etc. Junto con eso, hemos estado utilizando la función Sleep () en la inicialización de cada paso en este código de ejemplo. Después de la primera función Sleep (), hemos estado utilizando la función Open () para abrir nuestro archivo llamado "TextFile.txt ”en modo de lectura y guarde el resultado de retorno al descriptor de archivos fd1.

En el siguiente paso, vamos a usar la función Read () para leer los datos del archivo de texto.txt usando su descriptor de archivo fd1. Tienes que notar una cosa; Solo estamos leyendo los 30 caracteres del archivo y los guardamos en la matriz de personajes "ARR."Si la función Read () funciona bien, devolverá algún número de éxito a la variable entera" n."En el tercer paso, hemos estado creando otro archivo llamado" Dest.txt ”usando la función Open () una vez más.

Se han proporcionado dos opciones a la función abierta en este paso. En el último paso, estamos lanzando la llamada del sistema Write () al pasarlo el descriptor del archivo FD2, la variable "n" y la matriz de búfer "arr" para copiar los datos del búfer "arr" al segundo archivo usando f2 f2.

#incluir
#incluir
#incluir
int main ()
char arr [40];
printf ("Apertura de texto de texto.txt en modo de solo lectura ... \ n ");
dormir (3);
int fd1 = open ("TextFile.txt ", o_rdonly);
printf ("Lectura de él ... \ n");
dormir (3);
int n = read (fd1, arr, 30);
printf ("Crear otro archivo para escribir en él ... \ n");
dormir (3);
int fd2 = open ("dest.txt ", o_creat | o_wronly, 0642);
printf ("Escribir el archivo de texto.Datos de TXT a Dest.archivo txt ... \ n ");
dormir (3);
escribir (fd2, arr, n);
printf ("\ n");

En esta ejecución del código, el primer archivo se abrió y la matriz "ARR" lee los datos de él.

El nuevo archivo se creó en modo de escritura.

Los datos de la matriz de caracteres "ARR" se pasan al segundo archivo.

Los datos de 30 caracteres se han copiado con éxito al Dest.archivo txt, como se muestra a continuación.

Conclusión

En esta guía, hemos explicado brevemente el uso de la llamada del sistema Read () en el idioma C. Para esto, hemos utilizado las matrices de búfer para leer datos de un archivo específico y mostrarlos en la consola. Además, hemos utilizado la función de lectura () y la matriz de búfer para copiar datos de texto de un archivo a otro.