stringtranslate.com

abierto (llamada al sistema)

En la mayoría de los sistemas de archivos , un programa inicializa el acceso a un archivo en un sistema de archivos mediante la llamada de sistema abierto . Esto asigna recursos asociados al archivo (el descriptor de archivo ) y devuelve un identificador que el proceso utilizará para hacer referencia a ese archivo. En algunos casos, la apertura se realiza mediante el primer acceso.

El mismo archivo puede ser abierto simultáneamente por varios procesos, e incluso por el mismo proceso, lo que da como resultado varios descriptores de archivo para el mismo archivo; dependiendo de la organización del archivo y del sistema de archivos. Las operaciones sobre los descriptores, como mover el puntero del archivo o cerrarlo, son independientes: no afectan a otros descriptores para el mismo archivo. Las operaciones sobre el archivo, como una escritura , se pueden ver en las operaciones sobre los otros descriptores: una lectura posterior puede leer los datos recién escritos.

Durante el open, el sistema de archivos puede asignar memoria para los buffers o puede esperar hasta la primera operación.

Se resuelve la ruta absoluta del archivo . Esto puede incluir la conexión a un host remoto y la notificación a un operador de que se requiere un medio extraíble. Puede incluir la inicialización de un dispositivo de comunicación. En este punto, puede devolverse un error si el host o el medio no están disponibles. Se realiza el primer acceso al menos al directorio dentro del sistema de archivos. Normalmente, se devolverá un error si no se pueden localizar o acceder los componentes de nivel superior de la ruta ( directorios ). Se devolverá un error si se espera que el archivo exista y no existe o si el archivo no debería existir ya y existe.

Si se espera que el archivo exista y así es, el acceso al archivo, tal como lo restringen los indicadores de permisos dentro de los metadatos del archivo o la lista de control de acceso , se valida en relación con el tipo de operaciones solicitadas. Esto generalmente requiere un acceso adicional al sistema de archivos, aunque en algunos sistemas de archivos los indicadores meta pueden ser parte de la estructura del directorio.

Si se está creando el archivo, el sistema de archivos puede asignar la cantidad inicial de almacenamiento predeterminada o una cantidad especificada según las capacidades del sistema de archivos. Si esto falla, se devolverá un error. Se puede realizar la actualización del directorio con la nueva entrada o se puede retrasar hasta que se realice el cierre .

Otros errores que pueden ocurrir durante la apertura incluyen fallas de actualización de directorio, conexiones múltiples no permitidas, fallas de medios, fallas de enlace de comunicación y fallas de dispositivo.

Siempre se debe examinar el valor de retorno y tomar una acción específica en caso de error.

En muchos casos, las bibliotecas en tiempo de ejecución específicas del lenguaje de programación pueden abrirse y realizar acciones adicionales, incluida la inicialización de una estructura de biblioteca en tiempo de ejecución relacionada con el archivo.

Tan pronto como un archivo ya no sea necesario, el programa debe cerrarlo. Esto hará que los buffers de la biblioteca de tiempo de ejecución y del sistema de archivos se actualicen en el medio físico y permitan que otros procesos accedan a los datos si se hubiera requerido un uso exclusivo. Algunas bibliotecas de tiempo de ejecución pueden cerrar un archivo si el programa llama a la salida de tiempo de ejecución. Algunos sistemas de archivos pueden realizar las operaciones necesarias si el programa finaliza. Es poco probable que ninguna de estas operaciones tenga lugar en caso de un fallo del núcleo o de la energía. Esto puede provocar estructuras del sistema de archivos dañadas que requieran la ejecución de utilidades del sistema de archivos privilegiadas y prolongadas durante las cuales todo el sistema de archivos puede quedar inaccesible.

Argumentos de convocatoria abierta

  1. La ruta al archivo,
  2. El tipo de acceso solicitado al archivo (lectura, escritura, adición, etc.),
  3. El permiso inicial del archivo se solicita mediante el tercer argumento llamado mode. Este argumento es relevante solo cuando se crea un nuevo archivo.

Después de utilizar el archivo, el proceso debe cerrarlo mediante la llamada de cierre , que toma el descriptor del archivo que se va a cerrar. Algunos sistemas de archivos incluyen una disposición que permite liberar el archivo.

Algunos lenguajes de programación incluyen bibliotecas de tiempo de ejecución que incluyen funciones adicionales para sistemas de archivos específicos. La rutina abierta (o alguna rutina auxiliar) puede incluir especificaciones para el tamaño de la clave, el tamaño del registro y la velocidad de conexión. Algunas rutinas abiertas incluyen especificaciones del código del programa que se ejecutará en caso de error.

Formato del lenguaje Perl

abrir FILEHANDLE , MODO [, EXPR ] 

Por ejemplo:

abrir ( mi $fh , ">" , "salida.txt" );   

Perl también utiliza la tiefunción del Tie::Filemódulo para asociar una matriz con un archivo. [1] La tie::AnyDBM_Filefunción asocia un hash con un archivo. [2]

Definición de POSIX de la biblioteca C

La convocatoria abierta está estandarizada por la especificación POSIX para el lenguaje C :

int open ( const char * ruta , int oflag , ... /*,mode_t modo */ ); int openat ( int fd , const char * ruta , int oflag , ...); int creat ( const char * ruta , mode_t modo ); ARCHIVO * fopen ( const char * restringir nombre_archivo , const char * restringir modo );                           

El valor devuelto es un descriptor de archivo que es una referencia a una estructura específica del proceso que contiene, entre otras cosas, un puntero de posición que indica en qué lugar del archivo actuará la siguiente operación.

Open puede devolver −1 indicando una falla y errnodetallando el error.

El sistema de archivos también actualiza una tabla global de todos los archivos abiertos que se utiliza para determinar si un archivo está actualmente en uso por algún proceso.

camino

El nombre del archivo que se abrirá. Incluye la ruta del archivo que define dónde, en qué sistema de archivos, se encuentra el archivo (o debería crearse).

openatespera una ruta relativa.

desfase

Este argumento se forma mediante la operación OR conjunta de parámetros opcionales y (de < fcntl.h >) uno de los siguientes:

O_RDONLY, O_RDWRyO_WRONLY

Los parámetros de opción incluyen:

En la convocatoria abierta se definen banderas y errores adicionales.

creat()se implementa como:

int creat ( const char * ruta , modo_t modo ) { return open ( ruta , O_WRONLY | O_CREAT | O_TRUNC , modo ); }         

fopen utiliza indicadores de cadena como r, w, ay +y devuelve un puntero de archivo utilizado con fgets, fputs y fclose.

modo

Opcional y relevante solo al crear un nuevo archivo, define los permisos del archivo . Estos incluyen la lectura, escritura o ejecución del archivo por parte del propietario, el grupo o todos los usuarios. El modo está enmascarado por la máscara de usuario del proceso de llamada : los bits establecidos en la máscara de usuario se borran en el modo.

Véase también

Notas

  1. ^ "Tie::File". perldoc.perl.org . Consultado el 7 de agosto de 2011 .
  2. ^ "AnyDBM_File". perldoc.perl.org . Consultado el 7 de agosto de 2011 .

Referencias