stringtranslate.com

abierto (llamada al sistema)

Para la mayoría de los sistemas de archivos , un programa inicializa el acceso a un archivo en un sistema de archivos mediante la llamada al 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 por el primer acceso.

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

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

Se resuelve la ruta absoluta del archivo . Esto puede incluir conectarse a un host remoto y notificar a un operador que se requiere un medio extraíble. Puede incluir la inicialización de un dispositivo de comunicación. En este punto, es posible que se devuelva un error si el host o el medio no está disponible. Se realiza el primer acceso a al menos el directorio dentro del sistema de archivos. Generalmente se devolverá un error si no se puede localizar o acceder a 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 sí existe.

Si se espera que el archivo exista y así es, el acceso al archivo, restringido por indicadores de permiso dentro de los metadatos del archivo o la lista de control de acceso , se valida con el tipo de operaciones solicitadas. Esto generalmente requiere un acceso adicional al sistema de archivos, aunque en algunos sistemas de archivos las metabanderas pueden ser parte de la estructura del directorio.

Si se está creando el archivo, el sistema de archivos puede asignar la cantidad de almacenamiento inicial predeterminada o una cantidad específica 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 en la actualización del directorio, conexiones múltiples no permitidas, fallas en los medios, fallas en los enlaces de comunicación y fallas en los dispositivos.

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

En muchos casos, las aperturas de bibliotecas en tiempo de ejecución específicas del lenguaje de programación pueden 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 debería cerrarlo. Esto hará que la biblioteca en tiempo de ejecución y los buffers del sistema de archivos se actualicen en los medios físicos y permitirá que otros procesos accedan a los datos si se hubiera requerido un uso exclusivo. Algunas bibliotecas en tiempo de ejecución pueden cerrar un archivo si el programa llama a la salida en tiempo de ejecución. Algunos sistemas de archivos pueden realizar las operaciones necesarias si el programa finaliza. Es probable que ninguna de estas cosas ocurra en caso de un fallo del núcleo o de energía. Esto puede causar estructuras del sistema de archivos dañadas que requieren la ejecución de utilidades del sistema de archivos prolongadas y privilegiadas durante las cuales todo el sistema de archivos puede ser inaccesible.

argumentos de convocatoria abierta

  1. El nombre de la ruta al archivo,
  2. El tipo de acceso solicitado al archivo (leer, escribir, agregar, etc.),
  3. El permiso inicial del archivo se solicita utilizando el tercer argumento llamado mode. Este argumento es relevante sólo cuando se crea un nuevo archivo.

Después de usar el archivo, el proceso debe cerrarlo mediante una 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 informáticos incluyen bibliotecas en tiempo de ejecución que incluyen funciones adicionales para sistemas de archivos particulares. 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 la especificación del código del programa que se ejecutará en caso de error.

forma de 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 POSIX de la biblioteca C

La convocatoria abierta está estandarizada por la especificación POSIX para 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 , modo mode_t ); ARCHIVO * fopen ( const char * restringir nombre de 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, lo que indica un error al errnodetallar 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á siendo utilizado actualmente por algún proceso.

camino

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

openatespera un camino relativo.

oflag

Este argumento se forma al combinar parámetros opcionales con OR y (de < fcntl.h >) uno de:

O_RDONLY, O_RDWRyO_WRONLY

Los parámetros de opción incluyen:

Las banderas y errores adicionales se definen en una convocatoria abierta.

creat()se implementa como:

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

fopen usa indicadores de cadena como r, y devuelve un puntero de archivo usado con fgets, fputs y fclose.wa+

modo

Opcional y relevante solo al crear un archivo nuevo, define los permisos del archivo . Estos incluyen leer, escribir o ejecutar el archivo por parte del propietario, el grupo o todos los usuarios. El modo está enmascarado por la máscara de usuario del proceso que llama : los bits establecidos en la máscara de usuario se borran en el modo.

Ver también

Notas

  1. ^ "Empate :: Archivo". perldoc.perl.org . Consultado el 7 de agosto de 2011 .
  2. ^ "Cualquier archivo DBM". perldoc.perl.org . Consultado el 7 de agosto de 2011 .

Referencias