FCNTL(2)

NOMBRE
fcntl - manipula el descriptor de fichero

SINOPSIS
#include <unistd.h>
#include <fcntl.h>

int fcntl(int fd, int cmd);
int fcntl(int fd, int cmd, long arg);

DESCRIPCIÓN
fcntl realiza una de las diversas operaciones miscelaneas en fd. La operación en cuestión está determinada mediante cmd:

F_DUPFD
    Hace que arg sea una copia de fd, es necesario cerrar fd en primer lugar.

    El mismo resultado se puede obtener fácilmente usando dup2.

    Los descriptores antiguo y nuevo pueden usarse indistintamente. Ambos comparten candados (locks), punteros de posición de ficheros (file position pointers) y banderas (flags); por ejemplo, si la posición del fichero se modifica usando lseek en uno de los descriptores, la posición del otro resulta modificada simultaneamente.

    Sin embargo, los dos descriptores no comparten la bandera close-on-exec "cerrar-en-ejecución".

    En caso de éxito, se regresa un nuevo descriptor.

F_GETFD
    Lee la bandera close-on-exec. Si el bit de bajo-orden es 0, el fichero permanecerá abierto durante exec, en caso contrario se cerrará el fichero.

F_SETFD
    Asigna el valor de la bandera close-on-exec al valor especificado por arg (solamente se usa el bit menos significativo).

F_GETFL
    Lee las banderas del descriptor (todas las banderas, según asignadas por open(2) serán regresadas).

F_SETFL
    Asignar las banderas del descriptor al valor asignado por arg. Sólo O_APPEND y O_NONBLOCK pueden asignarse.

    Las banderas se comparten entre copias (hechas con dup etc.) del mismo descriptor de fichero.

    Las banderas y su semántica están descritas en open(2).

F_GETLK, F_SETLK, and F_SETLKW
    Dirige candados de ficheros discrecionarios (discretionary file locks).

F_GETOWN
    Obtiene el ID del proceso (o grupo de procesos) del dueño de un zócalo (socket).

    Grupos de procesos regresan como valores negativos.

F_SETOWN
    Asigna el proceso o grupo de procesos propietarios de un interruptor.

    Para estas directivas, "propiedad" significa recivir una señal SIGIO ó SIGURG

    Grupos de procesos regresan como valores negativos.

VALOR REGRESADO
El valor regresado depende de la operación:

F_DUPFD
    El nuevo descriptor.

F_GETFD
    Valor de la bandera.

F_GETFL
    Valor de las banderas.

F_GETOWN
    Valor del propietario del descriptor.

En caso de error el valor regresado es -1, y errno es asignado apropiadamente.

ERRORES

EBADF
    fs no es un descriptor de fichero abierto.

EINVAL
    Para F_DUPFD, arg es negativo o mayor que el valor máximo permitido.

EINVAL
    Para F_DUPFD, el proceso ya tiene el número máximo de descriptores de ficheros abiertos.

NOTAS
Los errores regresados por dup2 son distintos de aquellos dados por F_DUPFD.

CONFORMA CON
SVID, AT&T, POSIX, X/OPEN, BSD 4.3

VÉASE
open(2), F_DUPFD(2), F_GETFD(2), F_GETFL(2), F_GETLK(2), socket(2).