Ejemplo de mknod en c

Ejemplo de mknod en c

Una tubería con nombre a veces denominada FIFO es una forma de interacción entre procesos en la computación. Es una versión de Linux de la noción de tubería clásica. Una tubería tradicional es "sin nombre" y solo dura casi el tiempo que el procedimiento. Por otro lado, una tubería con nombre puede durar mientras el sistema esté operativo, incluso si el proceso ya no está activo. Si ya no se requiere, se puede eliminar. Una tubería con nombre generalmente aparece como un archivo, y los procesos se conectan a él para la interacción entre procesos.

Un archivo FIFO es un tipo de archivo de almacenamiento local que permite que dos o más procesos interactúen entre sí leyendo y escribiendo desde y hacia él. El principal inconveniente de las tuberías es que solo pueden ser utilizados por un proceso, que puede tener lectores y escritores o procesos que usan la misma lista de descriptores de archivos; Como resultado, las tuberías tienen un inconveniente importante: no pueden pasar datos en los procesos que no están relacionados. Esto es como no comparten una tabla de descriptor de archivo. Sin embargo, si las tuberías son nombradas, se pueden leer y escribir como cualquier otro archivo. Los procesos ni siquiera tienen que conectarse.

Las tuberías nombradas son FIFO, yo.mi. Primero en las tuberías de primera salida. La carcasa se puede usar para generar FIFOS. Sin embargo, se pueden hacer con la programación C utilizando la llamada del sistema mknod (). La opción de modo determina los permisos que se utilizarán, así como el tipo de nodo que se generará. Debería ser un bitwise o la conjunción de uno de los tipos de archivos que se proporcionan a continuación y los privilegios del nuevo nodo. La Umask del proceso modifica los permisos como de costumbre: los permisos del nodo generado. Si Mknod () tiene éxito, devuelve cero; De lo contrario, devuelve -1.

Sintaxis

int mknod (const char *nameOfPath, mode_t modo, dev_t dev);

El nombre de ruta que está utilizando para el archivo es el nombre de la ruta. Un conjunto de bits que describen el tipo de archivo y los privilegios de acceso que tiene la intención de utilizar se conoce como 'Modo ”. S_ifdir, que se utiliza para construir un directorio, y S_ififo, que se utiliza para establecer un FIFO, son los únicos tipos de archivos permitidos. La mayoría de las veces, Dev es "ignorado."

Ejemplo

Después de explicar el concepto básico y la sintaxis de la llamada del sistema mknod () en el lenguaje de programación C, hemos definido un ejemplo para la comprensión de nuestro usuario. Estamos implementando nuestro código de ejemplo en el Ubuntu 20.04 Sistema operativo Linux con un compilador GCC para la ejecución y compilación del código. Hemos usado el comando nano en el shell para la creación del archivo. Para ejecutar un ejemplo en el lenguaje C, hemos utilizado el ".Extensión del archivo C ".

Ejecutemos el comando enumerado a continuación en la consola del Ubuntu 20.04 Sistema operativo Linux para la creación de archivos.

$ nano w.C

En nuestro caso, el nombre del archivo es "W.c ", también puede modificarlo. Ahora el archivo se creará y se abrirá en el editor GNU. Tienes que escribir el script que se muestra en la imagen afección a continuación.

El script se puede modificar de acuerdo con su trabajo, pero para este propósito, debe comprender completamente este ejemplo básico. El descriptor de archivo predeterminado para que un programa escriba mensajes de advertencia es dirección, a menudo conocido como error estándar. El error se imprime en la pantalla de salida o terminal de ventana usando Steer. Steer ha sido una de las salidas de comandos, similar a Stdout, que a menudo se registra en otro lugar. S_irusr es una macro constante de Posix que se encuentra en SYS/STAT. H. El bit de permiso de lectura del usuario es lo que se llama. El prefijo S_ RUSR podría referirse al estado, como la lectura del usuario. S_irusr es una macro constante de Posix que se encuentra en SYS/STAT. H. El bit de acceso de lectura del usuario es lo que se llama. El prefijo S_ RUSR podría referirse al estado, como la lectura del usuario. Queremos proporcionar al usuario de lectura y acceso de escritura en esta situación. Como resultado, establecemos el modo en s irusr | S IWUSR | S ififo. El dev se verifica si el tipo de archivo es S_IFCHR o S_IFBLK; Sin embargo, no se tiene en cuenta.

Como resultado, usamos 0 como parámetro. El método Perror () devuelve un mensaje de error estándar que detalla el error más reciente encontrado al llamar a un sistema o función de biblioteca. Después de escribir y comprender el script, debe cerrar el archivo y simplemente volver a la consola. Ejecutemos el siguiente comando en el Ubuntu 20.04 Consola del sistema operativo Linux para la compilación y ejecución de scripts.

$ GCC W.C
ps ./a.afuera

Al observar la imagen atacada anteriormente, puede identificar fácilmente que no surge ningún error al compilar. La salida esperada también se puede ver en la pantalla.

Conclusión

Este artículo tenía que ver con la llamada del sistema Mknod () en el lenguaje de programación C. Hemos hecho todo lo posible para iluminarlo en el uso básico de la llamada del sistema mknod (). La sintaxis de la llamada del sistema Mknod () se ha explicado para la comprensión del usuario. El ejemplo utilizado en esta guía es muy simple, y los usuarios novatos también pueden entender en el primer Go. Espero que este artículo lo guíe cada vez que intente usar la llamada del sistema Mknod () en el lenguaje de programación C.