Subrutina abierta, openat, openx, openxat, open64, open64at, open64x, open64xat, creat o creat64
Finalidad
Abre un archivo para leer o escribir.
Sintaxis
#include <fcntl.h>
int DirFileDescriptor;
const char *Path;
int OFlag;
mode_t Mode;
int DirFileDescriptor;
const char * Path;
int OFlag;
mode_t Mode;
long Extension;
int creat (Path, Mode)
const char *Path;
mode_t Mode;int open64 (Path, OFlag [, Mode])
const char *Path;
int OFlag;
mode_t Mode; int open64at (DirFileDescriptor, Path,
OFlag [, Mode])
int DirFileDescriptor;
const char * Path;
int OFlag;
mode_t Mode; int creat64 (Path, Mode)
const char *Path;
mode_t Mode; int open64x (Path, OFlag, Mode, Extension)
char *Path;
int64_t OFlag;
mode_t Mode;
ext_t Extension; int open64xat (DirFileDescriptor, Path, OFlag, Mode, Extension)
int DirFileDescriptor;
char *Path;
int64_t OFlag;
mode_t Mode;
ext_t Extension;Descripción
La subrutina openat es equivalente a la subrutina open si el parámetro DirFileDescriptor es AT_FDCWD o el parámetro Path es un nombre de ruta absoluto. Si DirFileDescriptor es un descriptor de archivo válido de un directorio abierto y Path es un nombre de ruta relativo, Path se considera relativo al directorio que está asociado con el parámetro DirFileDescriptor en lugar del directorio de trabajo actual. Del mismo modo, las subrutinas openxat, open64at u open64xat son equivalentes a las subrutinas openx, open64 u open64x, respectivamente, del mismo modo que openat y open.
Las subrutinas open, openx y creat establecen una conexión entre el archivo nombrado por el parámetro Path y un descriptor de archivo. El descriptor de archivo abierto es utilizado por las subrutinas de E/S posteriores, como lectura y escritura, para acceder a ese archivo.
La subrutina openx es la misma que la subrutina open, con la adición de un parámetro Extensión, que se proporciona para el uso del controlador de dispositivo. La subrutina creat es equivalente a la subrutina open con los indicadores O_WRONLY, O_CREAT y O_TRUNC activados.
El descriptor de archivo devuelto es el descriptor de archivo más bajo no abierto anteriormente para ese proceso. Ningún proceso puede tener más de OPEN_MAX descriptores de archivo abiertos simultáneamente.
El desplazamiento del archivo, marcando la posición actual dentro del archivo, se establece en el principio del archivo. El nuevo descriptor de archivo se establece para permanecer abierto en las subrutinas exec.
Las subrutinas open64 y creat64 son equivalentes a las subrutinas open y creat excepto en que la bandera O_LARGEFILE se establece en la descripción del archivo abierto asociado con el descriptor de archivo devuelto. Esta bandera permite acceder a ficheros mayores que OFF_MAX. Si la persona que llama intenta abrir un archivo mayor que OFF_MAX y O_LARGEFILE no está establecido, la apertura fallará y errno será establecido a EOVERFLOW.
En el entorno de programación habilitado para archivos grandes, open se redefine como open64 y creat se redefine como creat64.
La subrutina open64x crea y accede a un archivo encriptado en un Sistema de Archivo EncriptadoEFS). La subrutina open64x es similar a la subrutina openx, con la modificación del parámetro OFlag, que se actualiza a una cantidad de 64 bits.
Si el parámetro DirFileDescriptor de la subrutina openat, openxat, open64at o open64xat se abrió sin el indicador de apertura O_SEARCH, la subrutina comprueba si se permiten búsquedas en el directorio utilizando los permisos actuales del directorio. Si el directorio se abrió con la bandera de apertura O_SEARCH, la subrutina no realiza la comprobación para ese directorio.
Parámetros
| Elemento | Descripción |
|---|---|
| DirFileDescriptor | Especifica el descriptor de archivo de un directorio abierto. |
| Vía | Especifica el archivo que se va a abrir. Si se especifica DirFileDescriptor y Path es un nombre de ruta relativo, entonces Path se considera relativo al directorio especificado por DirFileDescriptor. |
| Modo | Especifica los permisos de lectura, escritura y ejecución del archivo que se va a crear (solicitado por el distintivo O_CREAT ). Si el archivo ya existe, este parámetro se ignora. El parámetro Mode se construye mediante la OR lógica de uno o más de los siguientes valores, que se definen en el archivo <sys/modesys/mode.h
Los atributos siguientes sólo se aplican a los archivos que son directamente ejecutables. No tienen ningún significado cuando se aplican a archivos de texto ejecutables como scripts de shell y scripts awk.
|
| Extensión | Proporciona comunicación con controladores de dispositivo de caracteres que requieren información adicional o devuelven un estado adicional. Cada controlador interpreta el parámetro Extensión de forma dependiente del dispositivo, ya sea como un valor o como un puntero a un área de comunicación. Los controladores deben aplicar valores predeterminados razonables cuando el valor del parámetro Extensión es 0. |
| OFlag | Especifica el tipo de acceso, el proceso abierto especial, el tipo de actualización y el estado inicial del archivo abierto. El valor de parámetro se construye mediante el ORing de distintivos de proceso abierto especiales. Estas banderas se definen en el archivo fcntl.h y se describen en las siguientes banderas. |
Indicadores que especifican el tipo de acceso
Los siguientes valores de distintivo de parámetro de OFlag especifican el tipo de acceso:
| Elemento | Descripción |
|---|---|
| O_RDONLY | El archivo se abre sólo para lectura. |
| O_WRONLY | El archivo se abre sólo para escritura. |
| O_RDWR | El archivo se abre tanto para la lectura como para la escritura. |
| O_SEARCH | El directorio se abre sólo para la búsqueda. Si el parámetro Vía no apunta a un directorio existente, se ignora el distintivo. |
Indicadores que especifican un procesamiento abierto especial
Los siguientes valores de distintivo de parámetro de OFlag especifican un proceso abierto especial:
| Elemento | Descripción |
|---|---|
| O_CREAT | Si el archivo existe, este distintivo no tiene ningún efecto, excepto como se indica en el distintivo O_EXCL . Si el archivo no existe, se crea un archivo regular con las siguientes características:
El archivo abierto con la bandera ' O_CREAT ' por la subrutina ' open64 ' debe crear un archivo encriptado cuando el archivo está dentro de un directorio encriptado o esquema de herencia y el proceso que llama tiene un almacén de claves abierto. Esto tendrá el efecto de generar una clave de cifrado simétrica aleatoria del archivo, envolverla con la clave pública del usuario y almacenarla en los metadatos del archivo. |
| O_EFSON | Junto con el indicador O_CREAT, este indicador crea explícitamente un archivo cifrado en un sistema de archivos habilitado para EFS, anulando la herencia. Esta función está disponible para la subrutina ' open64x '. |
| O_EFSOFF | Junto con el distintivo O_CREAT , este distintivo altera temporalmente la herencia para crear un archivo no cifrado. Esta función está disponible para la subrutina ' open64x '. |
| O_DIRECTORY | La subrutina no es satisfactoria si el parámetro Vía no apunta a un directorio. |
| O_EXCL | Si se establecen los distintivos O_EXCL y O_CREAT , la apertura no es satisfactoria si el archivo existe. Nota: El indicador O_EXCL no es totalmente compatible con los sistemas de archivos de redNFS). El protocolo NFS no garantiza la función diseñada de la bandera O_EXCL.
|
| O_NSHARE | Asegura que ningún proceso tiene este archivo abierto y se opone a que se abra posteriormente. Si el archivo está en un sistema de archivos físico y ya está abierto, esta apertura no es satisfactoria y se devuelve inmediatamente a menos que el parámetro OFlag también especifique el distintivo O_DELAY . Este distintivo sólo es efectivo con sistemas de archivos físicos. Nota: Este distintivo no está soportado por NFS.
|
| O_RSHARE | Asegura que ningún proceso tiene este archivo abierto para escritura y se opone a aperturas posteriores para la escritura. El proceso de llamada puede solicitar acceso de escritura. Si el archivo está en un sistema de archivos físico y está abierto para escritura o abierto con el distintivo O_NSHARE , esta apertura falla y vuelve inmediatamente a menos que el parámetro OFlag también especifique el distintivo O_DELAY . Nota: Este distintivo no está soportado por NFS.
|
| O_RAW | Para leer o escribir el archivo cifrado en modalidad sin formato sin contener la clave de cifrado. Esta función está disponible para la subrutina ' open64x '. |
| O_DEFER | El archivo se abre para actualización diferida. Los cambios en el archivo no se reflejan en el almacenamiento permanente hasta que se realiza una operación de subrutina fsync. Si no se realiza ninguna operación de subrutina fsync, los cambios se descartan cuando se cierra el archivo. Nota: Este distintivo no está soportado por NFS o JFS2, y el distintivo se ignorará silenciosamente.
Nota: Este distintivo hace que las páginas modificadas estén respaldadas por espacio de paginación. Antes de utilizar este distintivo, asegúrese de que haya suficiente espacio de paginación.
|
| O_NOCTTY | Este distintivo especifica que la terminal de control no se debe asignar durante esta apertura. |
| O_TRUNC | Si el archivo no existe, este distintivo no tiene ningún efecto. Si el archivo existe, es un archivo normal y se abre correctamente con la bandera O_RDWR o la bandera O_WRONLY, se aplican todas las siguientes condiciones:
|
| O_DIRECT | Este distintivo especifica que se utilizará i/o directo para este archivo mientras se abre. |
| O_CIO | Este distintivo especifica que se utilizará i/o (CIO) concurrente para el archivo mientras se abre. Puesto que la implementación de lectores y grabadores simultáneos utiliza la vía de acceso de E/S directa (con requisitos más específicos para mejorar el rendimiento de la ejecución de la base de datos en el sistema de archivos), este distintivo alterará temporalmente el distintivo O_DIRECT si se especifican las dos opciones al mismo tiempo. La longitud de los datos que se deben leer o escribir y el desplazamiento de archivo debe estar alineado con la página para que se transfiera como direct i/o con lectores y transcriptores simultáneos. El distintivo O_CIO es exclusivo. Si el archivo se abre de cualquier otra forma (por ejemplo, utilizando el distintivo O_DIRECT o abriendo el archivo normalmente), la apertura fallará. Si el archivo se abre utilizando el distintivo O_CIO y otro proceso para abrir el archivo de otra forma, la apertura fallará. La bandera O_CIO también impide que la subrutina mmap y la subrutina shmat accedan al archivo. La subrutina mmap y la subrutina shmat devuelven EINVAL si se utilizan en un fichero que se abrió utilizando la bandera O_CIO. |
| O_CIOR | Este distintivo especifica que se utilizará la E/S simultánea para el archivo mientras se abre. Este indicador sólo puede utilizarse junto con O_CIO. Además, este distintivo también especifica que otro proceso puede abrir el archivo en modalidad de sólo lectura. Todas las demás formas de abrir el archivo fallarán. Esta bandera sólo está disponible con la interfaz open64x (). Las otras variedades de open allow only only flags defined in the low-order 32 bits. |
| O_INSTANTÁNEA | El archivo que se está abriendo contiene una instantánea de JFS2 . Las siguientes llamadas de lectura que utilicen este descriptor de archivo leerán la instantánea cocinada en lugar de los bloques de la instantánea sin procesar. Una instantánea sólo puede tener un descriptor de archivo abierto activo para ella. La opción O_SNAPSHOT sólo está disponible para instantáneas externas. |
La subrutina open no tiene éxito si se cumple alguna de las siguientes condiciones:
- El archivo da soporte a bloqueos de registro aplicados y otro proceso ha bloqueado una parte del archivo.
- El archivo está en un sistema de archivos físico y ya está abierto con el distintivo O_RSHARE o el distintivo O_NSHARE .
- El archivo no permite el acceso de escritura.
- El archivo ya está abierto para actualización diferida.
Indicador que especifica el tipo de actualización
Un programa puede solicitar algún control sobre cuándo se deben hacer permanentes las actualizaciones para un archivo regular abierto para el acceso de escritura. Los siguientes valores de parámetro de OFlag especifican el tipo de actualización realizada:
| Elemento | Descripción |
|---|---|
| O_SYNC: | Si se establece, las actualizaciones de los archivos regulares y las grabaciones en los dispositivos de bloque son actualizaciones síncronas. La actualización de archivos se realiza mediante las subrutinas siguientes:
Al volver de una subrutina que realiza una actualización síncrona (cualquiera de las subrutinas anteriores, cuando se establece el distintivo O_SYNC ), el programa tiene la seguridad de que todos los datos del archivo se han grabado en almacenamiento permanente, incluso si el archivo también está abierto para actualización diferida. |
| Elemento | Descripción |
|---|---|
| O_DSYNC: | Si se establece, los datos de archivo, así como todos los metadatos del sistema de archivos necesarios para recuperar los datos de archivo se graban en sus ubicaciones de almacenamiento permanentes. Los atributos de archivo como los tiempos de acceso o modificación no son necesarios para recuperar datos de archivo, y como tales, no se garantiza que se graben en sus ubicaciones de almacenamiento permanentes antes de que vuelvan las subrutinas anteriores. (subrutinas listadas en la descripción O_SYNC ). |
| O_SYNC | O_DSYNC: | Si se establecen ambos distintivos, los datos del archivo y todos los metadatos del archivo (incluido el tiempo de acceso) se graban en sus ubicaciones de almacenamiento permanentes. |
| Elemento | Descripción |
|---|---|
| O_RSYNC: | Este distintivo se utiliza en combinación con O_SYNC o D_SYNC, y amplía sus comportamientos de operación de grabación para leer operaciones. Por ejemplo, cuando O_SYNC y R_SYNC están establecidos, una operación de lectura no volverá hasta que los datos del archivo y todos los metadatos del archivo (incluido el tiempo de acceso) se graben en sus ubicaciones de almacenamiento permanentes. |
Indicadores que definen el estado inicial del archivo abierto
Los siguientes valores de distintivo de parámetro de OFlag definen el estado inicial del archivo abierto:
| Elemento | Descripción |
|---|---|
| O_APPEND | El puntero de archivo se establece en el final del archivo antes de cada operación de grabación. |
| O_DELAY | Especifica que si la subrutina open no pudo tener éxito debido a la imposibilidad de otorgar el acceso en un sistema de archivos físico requerido por la bandera O_RSHARE o la bandera O_NSHARE, el proceso se bloquea en lugar de devolver el código de error ETXTBSY. |
| O_NDELAY | Se abre sin demora. |
| O_NONBLOCK | Especifica que la subrutina abierta no debe bloquearse. |
La bandera O_NDELAY y la bandera O_NONBLOCK son idénticas excepto por el valor devuelto por las subrutinas de lectura y escritura. Estos distintivos significan que el proceso no bloquea el estado de un objeto, sino que bloquea la entrada o salida a un archivo o dispositivo de bloque normal.
El distintivo O_DELAY sólo es relevante cuando se utiliza con los distintivos O_NSHARE o O_RSHARE . No está relacionado con los distintivos O_NDELAY y O_NONBLOCK .
Notas generales sobre los indicadores de parámetros OFlag
El efecto del distintivo O_CREAT es inmediato, incluso si el archivo se abre con el distintivo O_DEFER .
Al abrir un archivo en un sistema de archivos físico con el distintivo O_NSHARE o el distintivo O_RSHARE , si el archivo ya está abierto con acceso en conflicto, se puede producir lo siguiente:
- Si el indicador O_DELAY está desactivado (por defecto), la subrutina de apertura no tiene éxito.
- Si el indicador O_DELAY está activado, la subrutina de apertura se bloquea hasta que no haya ninguna apertura conflictiva. No hay ninguna detección de punto muerto para los procesos utilizando el distintivo O_DELAY .
Al abrir un archivo en un sistema de archivos físico que ya se ha abierto con el distintivo O_NSHARE , se puede producir lo siguiente:
- Si el distintivo O_DELAY es claro (el valor predeterminado), la apertura no es satisfactoria inmediatamente.
- Si se establece el distintivo O_DELAY , los bloques abiertos hasta que no haya ningún conflicto abierto.
Al abrir un archivo con el distintivo O_RDWR, O_WRONLYo O_TRUNC y el archivo ya está abierto con el distintivo O_RSHARE :
- Si el distintivo O_DELAY es claro (el valor predeterminado), la apertura no es satisfactoria inmediatamente.
- Si se establece el distintivo O_DELAY , los bloques abiertos hasta que no haya ningún conflicto abierto.
Al abrir un primer inicio (FIFO) con el distintivo O_RDONLY , se puede producir lo siguiente:
- Si las banderas O_NDELAY y O_NONBLOCK están claras, la apertura se bloquea hasta que un proceso abre el fichero para escritura. Si el archivo ya está abierto para escritura (incluso por el proceso de llamada), la subrutina open vuelve sin demora.
- Si se establece el distintivo O_NDELAY o el distintivo O_NONBLOCK , la apertura se realiza de forma inmediata aunque ningún proceso tenga la FIFO abierta para escritura.
Al abrir un FIFO con el distintivo O_WRONLY , se puede producir lo siguiente:
- Si los distintivos O_NDELAY y O_NONBLOCK son claros (el valor predeterminado), los bloques abiertos hasta que un proceso abre el archivo para lectura. Si el archivo ya está abierto para escritura (incluso por el proceso de llamada), la subrutina open vuelve sin demora.
- Si la bandera O_NDELAY o la bandera O_NONBLOCK está activada, la subrutina open devuelve un error si ningún proceso tiene actualmente el fichero abierto para lectura.
Cuando se abre un archivo especial de caracteres o especial de bloque que da soporte a aperturas no de bloqueo, como por ejemplo un dispositivo de terminal, se puede producir lo siguiente:
- Si los distintivos O_NDELAY y O_NONBLOCK son claros (el valor predeterminado), los bloques abiertos hasta que el dispositivo esté listo o disponible.
- Si se activa la bandera O_NDELAY o la bandera O_NONBLOCK, la subrutina open vuelve sin esperar a que el dispositivo esté listo o disponible. El comportamiento posterior del dispositivo es específico del dispositivo.
Cualquier información adicional sobre el efecto, si lo hay, de las banderas O_NDELAY, O_RSHARE, O_NSHARE y O_DELAY en un dispositivo específico se documenta en la descripción del archivo especial relacionado con el tipo de dispositivo.
Si la ruta se refiere a un archivo STREAMS, oflag puede construirse a partir de O_NONBLOCK OR-ed con O_RDONLY, O_WRONLY o O_RDWR. Otros valores de distintivo no son aplicables a los dispositivos STREAMS y no tienen ningún efecto en ellos. El valor O_NONBLOCK afecta a la operación de los controladores STREAMS y a determinadas funciones aplicadas a los descriptores de archivo asociados a los archivos STREAMS. Para los controladores STREAMS, la implementación de O_NONBLOCK es específica del dispositivo.
Si path nombra el lado del controlador de un dispositivo pseudo-terminal, entonces no se especifica si open bloquea el lado del trabajador para que no se pueda abrir. Las aplicaciones portátiles deben llamar a unlockpt antes de abrir el lado del trabajador.
El distintivo O_SEARCH tiene el mismo valor que el distintivo O_EXEC . A partir de AIX® 7.1, los programas que han pasado el distintivo O_EXEC a un directorio abierto pueden fallar, ya que el código abierto también comprobará el permiso de búsqueda para el directorio.
El mayor valor que pueda representarse correctamente en un objeto de tipo off_t se establecerá como desplazamiento máximo en la descripción del fichero abierto.
Valores de retorno
Tras la finalización satisfactoria, se devuelve el descriptor de archivo, un entero no negativo. En caso contrario, se devuelve un valor de -1, no se crea ni modifica ningún archivo y se establece la variable global errno para indicar el error.
Códigos de error
Las subrutinas open,openat openx, openxat, open64, open64at, open64x, open64xat y creat no tienen éxito y el archivo nombrado no se abre si se cumple una o más de las siguientes condiciones:
| Elemento | Descripción |
|---|---|
| EACCES | Ocurre uno de los siguientes casos:
|
| FEAGA | El distintivo O_TRUNC está establecido y el archivo con nombre contiene un bloqueo de registro propiedad de otro proceso. |
| EDQUOT | El directorio en el que se está colocando la entrada para el nuevo enlace no se puede ampliar, o no se ha podido asignar un i-nodo para el archivo, porque se ha agotado la cuota de usuario o grupo de bloques de disco o i-nodos del sistema de archivos que contiene el directorio. |
| EEXIST | Los distintivos O_CREAT y O_EXCL se establecen y el archivo especificado existe. |
| EFBIG | Se ha intentado escribir un archivo que excede el límite de archivo del proceso o el tamaño máximo de archivo. Si el usuario ha establecido la variable de entorno XPG_SUS_ENV=ON antes de la ejecución del proceso, entonces la señal SIGXFSZ se envía al proceso cuando se excede el límite de tamaño de archivo del proceso. |
| EINTR | Se ha capturado una señal durante la subrutina de apertura. |
| EIO | El parámetro path nombra un fichero STREAMS y se ha producido un cuelgue o un error. |
| EISDIR | El archivo con nombre es un directorio y se necesita acceso de escritura (el distintivo O_WRONLY o O_RDWR se establece en el parámetro OFlag ). |
| EMFILE | Ya se ha alcanzado el límite del sistema para descriptores de archivos abiertos por proceso (OPEN_MAX). |
| ENAMETOOLONG | La longitud del parámetro Vía excede el límite del sistema (PATH_MAX); o un componente de nombre de vía de acceso es más largo que NAME_MAX y _POSIX_NO_TRUNC está en vigor. |
| ENFILE | La tabla de archivos del sistema está llena. |
| ENOENT | El distintivo O_CREAT no está establecido y el archivo especificado no existe; o el distintivo O_CREAT no está establecido y el prefijo de vía de acceso no existe o el parámetro Vía apunta a una serie vacía. |
| ENOTDIR | El distintivo O_DIRECTORY está establecido y el parámetro Path no apunta a un directorio existente. |
| ENOMEM | El parámetro Vía nombra un archivo STREAMS y el sistema no puede asignar recursos. |
| ENOSPC | El directorio o sistema de archivos que contiene el archivo nuevo no se puede ampliar. |
| ENOSR | El argumento Path nombra un archivo basado en STREAMS y el sistema no puede asignar un STREAM. |
| ENOTDIR | Un componente del prefijo de vía de acceso especificado por el componente Vía no es un directorio. |
| ENXIO | Ocurre uno de los siguientes casos:
|
| EVERFLOW | Se ha abierto un archivo mayor que un terabyte en el kernel de 32 bits en JFS2. El tamaño máximo exacto se especifica en MAX_FILESIZE y puede obtenerse mediante la llamada al sistema pathconf. Cualquier archivo más grande que ese no puede ser abierto en el núcleo de 32 bits, pero puede ser creado y abierto en el núcleo de 64 bits. |
| EROFS | El archivo con nombre reside en un sistema de archivos de sólo lectura y es necesario el acceso de escritura ( O_WRONLY, O_RDWR, O_CREAT (si el archivo no existe) o el distintivo O_TRUNC se establece en el parámetro OFlag ). |
| ETXBSY | El archivo está en un sistema de archivos físico y ya está abierto de forma (con el distintivo O_RSHARE o O_NSHARE ) que impide que se abra; o se ha solicitado el distintivo O_NSHARE o O_RSHARE con el distintivo O_NDELAY y hay un conflicto abierto en un sistema de archivos físico. |
| ENOATTR | No se ha cargado ningún almacén de claves en este proceso. |
| ESAD | No hay ninguna clave disponible en el almacén de claves para el propietario del nuevo archivo. |
| Elemento | Descripción |
|---|---|
| EVERFLOW | Se realizó una llamada a open and creat y el archivo ya existía y su tamaño era mayor que OFF_MAX y no se había establecido el indicador O_LARGEFILE. |
Las subrutinas open, openx, open64x y creat no tienen éxito si se cumple una de las siguientes condiciones:
| Elemento | Descripción |
|---|---|
| EFAULT | El parámetro Vía apunta fuera del espacio de direcciones asignado del proceso. |
| EINVAL | El valor del parámetro OFlag no es válido. |
| ELOOP | Se han encontrado demasiados enlaces simbólicos en la conversión del parámetro Vía . |
| ETXBSY | El archivo especificado por el parámetro Vía es un archivo de procedimiento puro (texto compartido) que se está ejecutando actualmente y el distintivo O_WRONLY o O_RDWR se establece en el parámetro OFlag . |
Las subrutinas openat, openxat, open64at y open64xat no tienen éxito y el archivo nombrado no se abre si se cumple una o más de las siguientes condiciones:
| Elemento | Descripción |
|---|---|
| EACCES | El directorio apuntado por el parámetro DirFileDescriptor no fue abierto con la bandera O_SEARCH y el permiso de búsqueda es denegado en el directorio. |
| EBADF | El parámetro Path no especifica una ruta absoluta y el parámetro DirFileDescriptor no es AT_FDCWD ni un descriptor de archivo válido. |
| ENOTDIR | El parámetro Path no especifica una ruta absoluta y el parámetro DirFileDescriptor no es AT_FDCWD ni un descriptor de archivo asociado a un directorio. |