Abrir función en lenguaje C

Abrir función en lenguaje C

El conocimiento de las funciones abiertas, de lectura y escritura es esencial porque siempre los necesitamos para almacenar o eliminar la información que se almacena en los archivos. El idioma C tiene dos funciones básicas que puede usar para abrir los archivos, utilizando las funciones Open () y Fopen (), cada una con diferentes métodos de llamadas.

En este artículo de Sugerencia de Linux, aprenderá cómo usar la función Open (). Explicaremos todo sobre esta función, su sintaxis, la llamada del método, los argumentos de entrada y salida, el tipo de datos que acepta en cada caso y cómo declararlo correctamente.

Luego, aplicaremos lo que aprendimos implementando el uso de esta función en ejemplos prácticos que preparamos para usted con fragmentos e imágenes de código que muestran el uso de la función Open () en el idioma C.

Para que tenga un conocimiento integral, agregamos una sección especial que describe todos los errores que pueden ocurrir al usar esta función, así como su detección e identificación, de modo que en caso de que ocurran, tenga las técnicas necesarias para un solución rápida.

Sintaxis de la función Open () en lenguaje C

int Open (const char *pathname, int flags);

Descripción de la función Open () en el lenguaje C

La función Open () abre un archivo para leer o escribir. Esta función abre el archivo que se especifica en el argumento de entrada PathName. Esta entrada debe especificar la ruta absoluta o relativa y el nombre del archivo en formato de cadena o un puntero a ella.

El argumento de entrada de los banderas especifica los atributos que debe tener el archivo. La siguiente es una lista de las banderas que acepta este argumento de entrada y una breve descripción del atributo que cada uno establece:

Bandera Descripción
O_rdonly Abra el archivo solo para leer.
O_WRONLY Abra el archivo solo para escribir.
O_rdwr Abra el archivo para leer y escribir.
O_creat Crea un archivo en la ruta y el nombre especificado en nombre de ruta argumento.
O_ agregar Abre el archivo y coloca el cursor al final del contenido.
O_async Habilitar el control de entrada y salida por señal.
O_CLOEXEC Habilite el modo Coster-on-EXEC en el archivo abierto.
O_nonblock Desactiva el bloqueo del archivo abierto.
O_tmpfile Crear un archivo temporal sin nombre en la ruta especificada.

En los casos en que se usan más de una bandera, se debe realizar una operación lógica "o" entre ellos. Esto se puede hacer dentro de los indicadores de argumento de entrada en la misma línea de código que la llamada de función.

Los atributos y los modos se pueden cambiar o consultar una vez que el archivo se abre con la función fcntl ().

La función Open () devuelve un entero que contiene el descriptor del archivo abierto. Este descriptor se utiliza como un argumento de entrada para funciones de procesamiento de archivos como Read (), Write (), etc., Para referirse al archivo.

Esta función se define en el "unistd.encabezado. Los indicadores que definen los atributos y el modo para abrir el archivo se definen en "fcntl.H ". Para usar la función Open (), debe incluir estos encabezados en su código de la siguiente manera:

#incluir
#incluir

Cómo abrir un archivo usando la función Open () en el idioma C

En este ejemplo, utilizaremos la función Open () para abrir un archivo en modo de lectura y escritura. En este caso, es un archivo creado previamente llamado "ejemplo.TXT" que se almacena en "Documentos".

Paso 1: El primer paso es incluir los encabezados requeridos y declarar que sale vacío y regresa en la función principal ().

Paso 2: El siguiente paso es declarar las variables que sirven como argumentos de entrada y salida a la función Open (). Como argumento de salida, declaramos el número entero "FD", que es el descriptor de archivo. Como argumento de entrada, declaramos la matriz de caracteres del búfer que contiene la cadena con la ruta y el nombre del archivo que se abrirá.

También declaramos una matriz de 512 caracteres llamado "texto" donde almacenamos el texto que queremos escribir en el archivo que, en este caso, es el primer párrafo de este artículo.

Paso 3: Una vez que se declaran las variables, llamamos a la función Open () y pasamos el entero "FD" como el argumento de salida, la ruta de la cadena como el primer argumento de entrada y el indicador O_WRONLY como el segundo argumento.

Etapa 4: Cuando se abre () devuelve de la llamada, devuelve el descriptor del archivo que se abre en "FD". Luego, escribimos con la función Write (), pasando el descriptor "FD" como el primer argumento de entrada, el texto de la cadena como el segundo argumento de entrada y finalmente el tamaño del texto que se obtiene con la función Strlen (). Después de la operación de escritura, cerramos el archivo con la función Cerrar ().

Aquí está el código completo para este ejemplo:

//Paso 1
#incluir
#incluir
#incluir
#incluir
#incluir
vacío principal ()

//Paso 2
intfd;
Char Buffer [] = "Documentos/Ejemplo.TXT";
Char Text [512] = "El conocimiento de las diversas funciones abiertas, lecturas y de escritura es esencial porque siempre los necesitaremos para almacenar o deshacerse de la información almacenada en archivos.
El idioma C tiene dos funciones básicas que puede usar para abrir archivos, abrir () y fopen (), cada una con diferentes métodos de llamadas.";
//Paso 3
fd = abre (búfer, o_wronly);
//Etapa 4
escribir (fd, & text, strlen (texto));
cerrar (fd);

La siguiente figura muestra la compilación y ejecución de este código junto con el archivo que acabamos de escribir. Como podemos ver, la función Open () abre el archivo correctamente. Luego usamos la función Write () para escribir el contenido del texto. En este caso, contiene el primer párrafo de este artículo:


Errores que pueden ocurrir cuando se usan la función Open (): cómo detectarlos e identificarlos

El uso de la función Open () puede conducir a varios errores. Si este es el caso, devuelve un resultado igual a -1.

La forma más fácil de determinar si se ha producido un error es usar una condición "si" donde la condición es el valor -1 que se devuelve en "FD". Ahora, veamos cómo puede usar este método para determinar si ha ocurrido un error:

fd = open ("ruta/nombre de archivo", banderas);
if (fd ==-1)
printf ("Se produjo un error al intentar abrir el archivo.");

Si la función Open () regresa con un error, va a la instrucción "IF" e imprime el mensaje, "Se produjo un error al intentar abrir el archivo".

Cuando Open () devuelve un resultado igual a -1, almacena automáticamente un código numérico en la variable Global Errno que se define en el "Errno.encabezado. Este código numérico se puede usar para identificar el error que ocurrió.

El siguiente es un extracto de los errores que puede generar la función Open (), junto con una breve descripción de cada error y el valor entero asociado:

Definición Valor en errno Error
Entera 1 operación no permitida
Enoent 2 El fichero o directorio no existe
Eintr 4 Llamada del sistema interrumpido
Enxio 6 No hay tal dispositivo o dirección
Enomem 12 Sin memoria
Eacces 13 Permiso denegado
Enfermo 14 Dirección mala
Ebusy dieciséis Dispositivo o recurso ocupado
Eexist 17 El archivo existe
ENEOVEV 19 Hay tal dispositivo
Enotdir 20 No es un directorio
Eisdir 21 Es un directorio
Einval 22 Argumento no válido
Efile 23 Desbordamiento de la tabla de archivos
Emprender 24 Demasiados archivos abiertos
Etxtbsy 26 Archivo de texto ocupado
Enospc 28 no queda espacio en el dispositivo
EROFS 30 Sistema de archivos de sólo lectura
Enametoolong 36 Nombre del archivo demasiado largo
Aloop 40 Demasiados enlaces simbólicos encontrados
Eoverflow 75 Valor demasiado grande para el tipo de datos definidos
Edquot 122 Cuota excedida

La forma más fácil de identificar un error es abrir un interruptor donde la variable errno es la condición de salto y cada caso es una definición de error.

A continuación, considere un ejemplo en el que abrimos un archivo que no existe, lo que resulta en un error. Para detectar un error, usamos la condición "if" que vimos en el fragmento anterior. Para identificarlo, abrimos un interruptor con los tres errores más comunes que esta función puede producir:

#incluir
#incluir
#incluir
#incluir
vacío principal ()

intfd;
buffer de char [1024];
FD = Open ("Documentos/No Existe.txt ", o_append | o_rdwr);
if (fd ==-1)
switch (errno)
Case Eperm:
printf ("Operación no permitida. Error: %i \ n ", errno);
romper;
Caso enoent:
printf ("No hay dicho archivo/directorio. Error:%i \ n ", errno);
romper;
case enotdir:
printf ("No es un directorio. Error: %i \ n ", errno);
romper;


La siguiente imagen muestra la compilación y ejecución de este código. En él, vemos cómo se detecta el error generado en la condición "IF" y cómo se identifican los errores en el condicional del conmutador para mostrar el mensaje y el valor específico:

Conclusión

En este artículo de Sugerencia de Linux, explicamos cómo usar la función Open () para abrir los archivos.

Le mostramos la sintaxis de esta función y la descripción teórica de cómo funciona, el método de llamada, los argumentos de entrada y el tipo de datos que se usa en cada caso.

Luego implementamos el uso de la función Open () en un ejemplo práctico utilizando fragmentos e imágenes de código. Le mostramos cómo declarar las variables requeridas, llamar a esta función para abrir un archivo y escribirle.

También incluimos una sección donde enumeramos todos los errores que esta función puede generar. Le mostramos las técnicas para detectarlas y clasificarlas para que tenga los medios necesarios para solucionarlos rápidamente cuando ocurran.