Uso de la función c fcntl

Uso de la función c fcntl
Como el nombre indica que FCNTL se abrevia como control de 'archivo'. Significa que se basa en el proceso de manejo de archivos. El fcntl es una llamada del sistema. Permite que el programa coloque un bloqueo de lectura o escritura. Esta función se puede usar para enmendar las propiedades del archivo que ya se abren o se pueden abrir a través de cualquier acción aplicada a ella. Es una función versátil y se usa para modificar archivos de muchas maneras, como abrir, leer y escribir, etc. Este artículo trata sobre las funciones de control en los archivos.

Fcntl en Linux

En el sistema operativo Linux, la llamada FCNTL se realiza a través de los descriptores. Por ejemplo, se coloca un bloqueo de lectura en un descriptor de archivo legible, y un caso similar es para el bloqueo de escritura. Un descriptor de archivo representa el número de archivo que se abre. Es conveniente que el programa recuerde en qué archivo está trabajando. Cuando abrimos un archivo, el número que aún no está asignado y es gratuito se da al archivo en la tabla de descriptor del archivo de procesos. Y en el caso de cerrar un archivo, ese número asignado se elimina de la tabla de descriptor del proceso.

Sintaxis

#incluir
int fcntl (descriptor entero, entero cmd)

En primer lugar, definimos la biblioteca FCNTL para que el proceso logre fácilmente. La llamada de función contiene principalmente dos argumentos en el parámetro. Uno es el descriptor, como se definió anteriormente; Define el archivo en el que se aplicará el comando del control. En otras palabras, en los que se deben cambiar los atributos. El segundo es el comando que se aplica a los descriptores especificados.

Cómo FCNTL cambia las propiedades del archivo

La función FCNTL se usa para cinco propósitos diferentes, principalmente incluyendo duplicación, configuración de indicadores, etc.; cada uno se describe aquí en detalle.

Cmd = f_dupfd

Duplicar el descriptor de archivos. El nuevo valor duplicado se devuelve a la función. Este valor es el más bajo que ya no se abre o se asigna a cualquier otro descriptor. Siempre se toma como un entero, y el valor siempre es mayor que el tercer argumento. Además, el valor duplicado tiene sus indicadores de descriptor de archivo. El nuevo descriptor tiene la misma entrada en la tabla que el descriptor original.

Cmd = getfd

Esta función tiene la especialidad para devolver los indicadores del descriptor como valor de función. Como el nombre indica, obtenemos la bandera después de configurarla.

Cmd = setfd

Como obtener el indicador, esta función se usa para establecer el indicador del descriptor. El programa establece el indicador en 0, no se cierre en ejecutivo o en 1, para cerrar en exec.

Cmd = f_getfl

Esta función devuelve los indicadores para el estado del archivo como el valor de una función. Cuando el estado para la bandera se describe como una bandera abierta, luego describimos las banderas de estado.

Cmd = f_setfl

Establece el indicador de estado en el archivo. Ya que getfl se usa para devolver el estado del archivo.

Cmd = f_getown

Esta función está relacionada con la identidad del proceso a medida que devuelve la identificación del proceso y la identificación del grupo de proceso.

CMD = F_SETOWN

Esta función tiende a crear y establecer ID de proceso o ID de proceso de grupo.

El valor de retorno del FCNTL depende del comando utilizado. Si los comandos encuentran un error, devuelve -1. Si cada función no se somete a ningún problema, entonces se devuelve cualquier otro valor excepto -1. Mientras que en el caso de F_Getown, la ID devuelta puede ser un valor positivo o un valor negativo.

Ahora agregaremos algunos ejemplos elementales aquí. Para implementar los códigos de FCNTL, debe tener un editor de texto y un terminal de Linux para obtener el valor resultante.

Ejemplo 1

Considere un ejemplo en el que creamos y luego escribimos una nueva línea en un archivo de texto de muestra. Este ejemplo no utilizará la participación de FCNTL en función. Las características de esta función se implementarán en el código solo utilizando una biblioteca.

#incluir

Escribiremos una cadena en el código, por lo que necesitamos usar la biblioteca de cadenas. Hemos tomado una variedad de descriptores de archivos aquí. Además, se ha tomado una matriz de caracteres que se inicializa directamente con una cadena de algunos caracteres. Con la ayuda del descriptor del archivo, utilizaremos algunas operaciones de archivo del estado del indicador del archivo, como leer y escribir en el archivo, etc. Si el archivo ya está creado, entonces debe abrirlo y escribir la cadena en él.

FD [0] = Open ("Muestra.txt ", o_rdwr);

Esta declaración abrirá el archivo llamado 'muestra.txt 'usando la bandera O_RDWR. Ahora para agregar la cadena define anteriormente, se ingresará en el archivo.

Escribir (fd [0], bf1, strlen (buf1));

A través de la opción de lectura, la cadena se mostrará en la ejecución del código desde el archivo. Ambos descriptores del archivo están cerrados al final.

Después de guardar el archivo, utilizaremos un compilador GCC para la ejecución del archivo.

archivo de archivo $ gcc -o.C
ps ./archivo

Cuando se ejecuta el código, verá que se muestra una cadena que hemos escrito en el código en un archivo. Esta declaración ha sido obtenida del archivo. Cuando vaya a los archivos en Ubuntu, verá la muestra.archivo txt. Notará que la cadena está escrita en el archivo a través del código al abrir el archivo.

Ejemplo 2

Este es un ejemplo del comando f_getfl. Devuelve el indicador de estado del archivo como el valor de la función. Primero, se abrirá el archivo; Si aún no se ha creado, entonces O_Creat creará el archivo; Primero, todas estas funciones de estado de bandera se indican a continuación para que sea fácil de entender.

O_rdonly: esta característica abre el archivo solo para el propósito de lectura.

O_wronly: solo trata con el propósito de escritura.

O_RDWR: También es para el proceso de lectura y escritura.

O_append: agrega en cada función de escritura en el archivo actual.

Estos son la bandera principal que se usa en el ejemplo. Volver al ejemplo, si el valor devuelto al abrir el archivo es inferior a 0, entonces se muestra un mensaje de error.

Después de abrir, debe obtener el archivo; Si el estado del archivo es -1, se muestra un mensaje de error; de lo contrario, se recibirá el estado del archivo. Ahora con la ayuda del modo de acceso, obtendremos el indicador del descriptor del archivo. Todas las opciones se verificarán a través de la declaración if-else. La opción según el estado del archivo habrá optado respectivamente. Al final, si el estado del descriptor del archivo es mayor que 1, significa que el archivo está cerrado ahora.

Compilar el código; Verá que todas las declaraciones se muestran de acuerdo con el estado de FD, ya sea que el archivo está abierto o cerrado.

Conclusión

El artículo 'c: uso de la función fcntl' contiene las características de la función fcntl. El descriptor de archivo juega un papel vital en el proceso de manejo de archivos con respecto a cualquier característica. También hemos utilizado algunos ejemplos de bandera, en el caso de leer y escribir en el archivo. Ambos ejemplos explicados aquí serán útiles para usted en la utilización de FCNTL en el lenguaje de programación C.