Función abierta de Posix en C

Función abierta de Posix en C
Aunque hay muchas bibliotecas en C, la biblioteca POSIX es muy conocida entre los desarrolladores debido a su amplia gama de funciones de llamadas del sistema, especialmente la función del sistema requiere "archivos". La biblioteca Posix para el sistema operativo Linux le proporciona una variedad de funciones. Hay una función Open () que se usa deliberadamente para abrir un archivo específico de un sistema en una de esas llamadas POSIX. Utiliza muchas opciones para crear, abrir, leer, escribir y hacer muchas cosas en los archivos de Linux.

Ejemplo 1:
Echemos un vistazo al primer ejemplo para usar la función Open () de POSIX para simplemente crear y abrir los archivos en modo de solo lectura. Para esto, use la consulta táctil en su shell para crear un archivo C. Se puede guardar en la carpeta de trabajo actual.

Abra su archivo recién generado,.mi. abierto.C, en el editor para agregar algún fragmento de código dentro de él, como en la imagen presentada. Inicie su código con el uso de encabezados estándar C como Stdio.h, fcntl.h, y errno.H que se incluyen a propósito para la entrada/salida estándar, el uso de la presentación y muestran los errores, respectivamente. Hay una función main () para realizar la ejecución. Creamos una variable entera "F" que se usa como descriptor de archivo para obtener el valor devuelto de la llamada de función "Open ()". La función Open () usa el nombre del archivo de texto junto con dos opciones: la opción "O_RDONLY" para leer el archivo ya existente y la opción "O_Creat" para crear un archivo si no existe.

La instrucción printf () muestra el valor devuelto utilizando el descriptor "F". El valor de "F" es igual a "-1". Lanza un error que no pudo abrir o crear un archivo junto con un mensaje de error a través de la función Perror (). De lo contrario, la instrucción printf () muestra el mensaje de éxito en nuestra pantalla. El código se completa utilizando la declaración de retorno 0.

#incluir
#incluir
#incluir
int main ()
int f = abre ("nuevo.txt ", o_rdonly | o_creat);
printf ("Valor de descriptor de archivo = %d \ n", f);
if (f == -1)
Perror ("no pudo crear/abrir un archivo ... \ n);
demás
printf ("archivo creado correctamente!\ n ");
regresar 0;

Después de guardar el código correctamente, lo compilamos con la herramienta de línea de comandos "GCC" como el compilador C que está disponible en el sistema Linux. Escriba la palabra clave "GCC" con el nombre de un archivo "Abrir.c "y ejecutarlo. La compilación es próspera y probamos el "./a.consulta de out "para ejecutar el código compilado. La salida muestra el valor de "F" junto con un mensaje de éxito que indica que finalmente creamos un nuevo archivo de texto con éxito. La salida de instrucción "LS" muestra el rojo resaltado "nuevo.Archivo TXT "creado por la opción" O_Creat "de la función Open () en la carpeta de trabajo actual.

Utilicemos el mismo código para obtener un error si la función Open () no se puede leer un archivo que no existe en el sistema. Usando la misma estructura del código, actualizamos la primera línea de código de la función Main (). Aquí, eliminamos la opción "o_creat" para crear un archivo nuevo usando la llamada de función Open () y solo usamos la opción "O_RDONLY".

Además, cambiamos el nombre de un archivo a "Prueba.txt "que no existe en nuestra carpeta de trabajo. Esto significa que la función Open () no puede abrir el archivo y la función Perror () muestra el mensaje de error respectivo en la consola. Guardemos este archivo C actualizado.

#incluir
#incluir
#incluir
int main ()
int f = abre ("prueba.txt ", o_rdonly);
printf ("Valor de descriptor de archivo = %d \ n", f);
if (f == -1)
Perror ("Error: [no pudo abrir un archivo]:);
demás
printf ("archivo abierto con éxito!\ n ");
regresar 0;

Ejecución del archivo después de la ejecución lanza el error "No hay dicho archivo o directorio".

Ejemplo 2:
Puede usar la llamada de función Open () para leer datos de cadena de un archivo específico utilizando las matrices. Para eso, solo necesitas el "unistd.h "y" fcntl.Bibliotecas H ". La ejecución del código comienza desde su método principal "main ()" que declara una matriz de tipo de caracteres "A" del tamaño 30. El descriptor del archivo entero utiliza el valor devuelto de la llamada de función Open (). La función Open () que se usa aquí coloca su opción "O_RDONLY" para abrirla en el modo de solo lectura. La función Read () en la siguiente línea se usa para almacenar un total de 12 caracteres desde el "archivo.txt "usando su descriptor" F "y guárdelo en la matriz de personajes" A ".

Si la función Read () tiene éxito para leer los datos de un archivo, devuelve algún valor a la variable "n". La llamada de función Write () usa la variable "n" para escribir los datos en la consola que se solo guardan en la matriz "A".

#incluir
#incluir
int main ()
char a [30];
int f = open ("archivo.txt ", o_rdonly);
int n = read (f, a, 12);
escribir (1, a, n);

Ahora, necesitamos crear el mismo nombre de texto de nombre "archivo".txt "en la misma carpeta y agregue algunos datos de texto como se presenta utilizando la instrucción" CAT "de Linux. Compilamos y ejecutamos nuestro "Abierto.archivo c "y obtenga los primeros 12 caracteres del" archivo.txt "se muestran en el shell.

Ejemplo 3:
Puede usar la llamada de función Open () para copiar los datos de texto de un archivo a otro con un ligero cambio en el código. Elegamos el mismo fragmento de código de ejemplo y hacemos algunos cambios en algunas de sus líneas. El tamaño del búfer de caracteres "A" se actualiza a 50 y el descriptor F1 abre el archivo "Archivo.txt "en un modo" solo de lectura "utilizando el" O_RDONLY "en una función Open (). La función Read () usa el descriptor "F1" para leer 25 caracteres del "archivo.archivo txt "y guárdelos en la matriz de buffer" a ". El valor de éxito/falla devuelto se guarda a la variable "n".

Otro descriptor de archivo "F2" se usa aquí para crear un nuevo archivo llamado "Fuente.txt "dentro de la misma carpeta usando la opción" 0_creat "en un método" abierto "y con un modo" solo de escritura "(O_WRONLY) con el valor 0642 para escribir. La llamada de función Write () usa el valor "n" para obtener los datos del búfer de caracteres "A" y analizarlo con el segundo archivo "Fuente.txt "usando su descriptor" F2 ". Ahora, ejecutemos el siguiente código para ver lo que obtenemos en la salida:

#incluir
#incluir
int main ()
char a [50];
int f1 = open ("archivo.txt ", o_rdonly);
int n = read (f1, a, 25);
int f2 = open ("fuente.txt ", o_creat | o_wronly, 0642)
escribir (f2, a, n);

Ahora tenemos un "archivo.txt "y" Abrir.archivo c "en la carpeta actual. Puede ver los datos dentro del archivo ".TXT". En la abertura.ejecución del archivo c ", la fuente.Se genera el archivo txt y los 25 caracteres del "archivo.El archivo txt "se copia a la" fuente.archivo txt "también.

Conclusión

Esta guía es simple pero llena de ejemplos de C para utilizar y aprender la llamada de función Posix "Open ()". Usando todos los ejemplos dados, nunca fallará mientras usa los archivos en C.