Cómo utilizar la llamada al sistema abierto en C

How Use Open System Call C



Las llamadas al sistema se utilizan en las distribuciones de Linux para proporcionar una puerta dentro del sistema operativo Linux y los programas. El sistema operativo Linux usa la biblioteca Glibc para admitir llamadas al sistema mientras usa el lenguaje C. También hay muchas más formas de utilizar las llamadas al sistema. En esta guía de artículos, discutiremos la llamada al sistema abierto en el sistema Linux. La llamada al sistema abierto se ha utilizado para abrir rápidamente el archivo especificado en la ruta. Nos informa sobre el descriptor de archivo de un archivo creado por el usuario. Hemos estado usando Ubuntu 20.04 para realizar una llamada práctica al sistema abierto.

Instalar bibliotecas

El lenguaje C requiere la instalación de algunos paquetes de biblioteca adicionales como requisitos previos. En primer lugar, debe instalar el paquete manpages-dev para verificar la información relacionada con las llamadas al sistema. Abra la terminal de la línea de comandos desde el área de actividad y ejecute la siguiente instrucción para instalar las páginas de manual.







$ sudo apt install páginas de manual-dev



El resultado para la finalización de la instalación se proporciona a continuación.







Ahora verificaremos la llamada al sistema abierto usando el comando man como se muestra a continuación.

$ hombre2abierto



La página del manual de salida para la llamada al sistema abierto se muestra a continuación. Puede ver la información adicional al respecto. Presione el botón q para salir.

La sintaxis anterior muestra las primeras tres líneas de las bibliotecas necesarias que se agregarán para las llamadas al sistema. Hay tres sintaxis disponibles para la llamada al sistema abierto. La primera sintaxis muestra el nombre de la ruta, que es el nombre de un archivo que se abrirá. El segundo parámetro, banderas, muestra el modo de un archivo, por ejemplo, lectura o escritura. La segunda sintaxis se puede utilizar cuando el archivo no existe. El modo de parámetro se utiliza para mostrar los privilegios del archivo.

Ahora es el momento de instalar el compilador GCC para la depuración de código C en la distribución de Linux Ubuntu 20.04. Para eso, ejecute la siguiente instrucción en el shell para hacerlo.

$ sudo apt install gcc

Requiere que toque Y para continuar instalando el compilador GCC; de lo contrario, presione el botón n para cerrar la instalación. Así que presiona el botón y y presiona Enter para continuar.

El resultado de la finalización se muestra a continuación.

Ejemplo 01

Veamos el ejemplo muy simple de una llamada al sistema abierto. Primero, abra el shell de comandos y cree un nuevo archivo de texto test.txt usando el comando táctil simple de la siguiente manera:

$tocartest.txt

Agregue algunos datos manualmente. Puede ver los datos en un archivo usando el siguiente comando cat.

$gatotest.txt

Ahora creemos un nuevo archivo C usando un comando nano en el shell, como se muestra a continuación.

$nanonuevo.c

Se abrirá el siguiente archivo GNU nano. Debe escribir el siguiente código de lenguaje C en él. Puede ver que hemos agregado los paquetes de biblioteca necesarios para que el código C se ejecute correctamente. Después de eso, hemos definido la función principal para trabajar en una llamada al sistema abierto. Hemos declarado dos variables enteras. La variable n se usa para contar los valores del búfer y fd se usa para el descriptor de archivo. Hemos declarado que la matriz de búfer de tipo de carácter tiene un tamaño de 50. La llamada al sistema abierto se ha utilizado para leer el contenido del archivo test.txt y devolverlo al descriptor del archivo. El O_RDONLY se ha utilizado con fines de lectura. La siguiente línea muestra la llamada al sistema de lectura para recopilar los 10 bytes del búfer y devolverlos al entero n. Además, el comando de escritura se ha utilizado para escribir el contenido o los datos del búfer en el descriptor de archivo, que es la pantalla de salida en nuestro caso en este momento. Guarde este archivo usando Ctrl + S y ciérrelo usando el comando Ctrl + X.

#incluir
#incluir
#incluir
#incluir

En tprincipal()
{
En tnorte,fd;
carbonizarsesoplo[50];
fd=abierto(prueba.TXT,O_RDONLY);
norte=leer(fd,soplo, 10);
escribir(1 ,soplo, 10);

Primero compilemos el código C para una llamada al sistema abierto usando el comando gcc a continuación.

$gccnuevo.c

Ahora es el momento de comprobar la salida del código C para una llamada al sistema abierto. Usemos el siguiente comando a.out en el shell. La salida muestra los 10 bytes del contenido de un archivo test.txt.

$ ./a.fuera

Tomemos otro ejemplo para escribir el contenido de un archivo en otro archivo mediante una llamada al sistema abierto. Para crear un nuevo archivo C usando el comando nano como se muestra a continuación.

$ nano nuevo.c

Así que tome el mismo código con un pequeño cambio en él. Hemos definido otro descriptor de archivo en el código como fd1. Todo el código es el mismo excepto por una línea adicional. La segunda última línea del código ha usado la llamada al sistema abierto para crear un nuevo archivo llamado target usando O_CREAT y el modo, solo escritura como O_WRONLY. 0642 muestra los privilegios asignados a este archivo. Y el archivo se ha devuelto a un nuevo descriptor de archivo. La siguiente línea ha mostrado un comando para escribir los bytes de contenido en el búfer de acuerdo con su descriptor de archivo. Guarde el archivo y ciérrelo.

Ejecute el comando de compilación gcc para depurar el archivo en lenguaje C.

$ gcc nuevo.c

Para mostrar la salida del código C, pruebe la instrucción a.out en el shell como se muestra a continuación. No hay salida porque la salida se ha redirigido al destino del archivo recién creado.

$ ./a.fuera

Revisemos los datos de un archivo de destino usando el comando cat. La salida muestra que el archivo tiene 20 bytes.

$ objetivo de gato

Conclusión

En el tutorial anterior, le explicamos cómo usar una llamada al sistema abierto en lenguaje C usando el compilador gcc. Con la ayuda de diferentes ejemplos explicados en esta guía, lo llevará a implementar su programa deseado.