fcntl

FCNTL(2)                          Systemaufrufe                         FCNTL(2)



BEZEICHNUNG
       fcntl - File-Descriptor Handling

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

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

DESCRIPTION
       fcntl führt eine von vielen unterschiedlichen Operationen auf dem File-
       Deskriptor fd aus.  Die jeweilige Operation wird durch den Parameter cmd
       angegeben:

       F_DUPFD  Kopiert fd in arg, fd wird vorher geschlossen, wenn es nötig ist

                Die gleiche Funktionalität kann einfacher mit der Routine
                dup2(2) erhalten werden.

                Die alten und neuen Deskriptoren können ausgetauscht werden.
                Sie verwenden beide die gleichen Locks, Positionszeiger und
                Flags.  Wenn beispielsweise die Dateiposition des einen
                Deskriptors mit lseek geändert wird, dann ist sie gleichzeitig
                auch beim anderen Deskriptor geändert.

                Die beiden Deskriptoren teilen sich jedoch nicht das close-on-
                exec Flag.

                Bei Erfolg wird der neue Deskriptor zurückgegeben.

       F_GETFD  Liest das close-on-exec Flag.  Wenn das low-order-Bit 0 ist,
                dann bleibt die Datei bei einem exec geöffnet, ansonsten wird
                sie geschlossen.

       F_SETFD  Setzt das close-on-exec Flag auf den Wert, der durch arg
                angegeben wurde.  (Nur das LSB (Least Significant Bit) wird
                benutzt.)


       F_GETFL  Liest die Flags des Deskriptors.  (Alle Flags, die mit open(2)
                gesetzt werden können, werden zurückgegeben.)

       F_SETFL  Setzt die Flags des Deskriptors auf die in arg angegebenen
                Werte.  Nur O_APPEND und O_NONBLOCK können gesetzt werden.

                Diese Flags werden von allen Kopien eines File-Deskriptors
                geteilt, die mit dup(2) o.ä. erzeugt wurden.

                Die einzelnen Flags und deren Bedeutung sind in open(2).
                beschrieben.

       F_GETLK, F_SETLK und F_SETLKW
                Behandelt ausschließliche Locks (discretionary file locks).

       F_GETOWN Gibt die Prozeß ID (oder Prozeßgruppe) vom Besitzer eines Sockts
                zurück.

                Prozeßgruppen werden als negative Werte zurückgegeben.

       F_SETOWN Setzt die Prozeß ID oder Prozeßgruppe für den Socket.

                Bei diesen Befehlen sind Besitz gleichbedeutend mit dem Empfang
                von SIGIO oder SIGURG Signalen.

                Prozeßgruppen werden als negative Werte angegeben..

RÜCKGABEWERTE
       Die Rückgabewerte sind abhängig von der ausgeführten Operation:

       F_DUPFD  Der neue File-Deskriptor.

       F_GETFD  Der Inhalt des Flags.

       F_GETFL  Der Inhalt der Flags.

       F_GETOWN Der Besetzer des Deskriptors.

       Bei einem Fehler wird -1 zurückgegeben und errno entsprechend gesetzt.

FEHLER
       EBADF    fd ist kein geöffneter File-Deskriptor.

       EINVAL   Bei F_DUPFD: arg ist negativ oder größer als der maximal
                erlaubte Wert.

       EMFILE   Bei F_DUPFD: Der Prozeß hat bereits das Maximum an File-
                Deskriptoren geöffnet.

BEMERKUNGEN
       Die Fehler, die von dup2(2) zurückgegeben werden, sind anders als die von
       F_DUPFD.

ABGESTIMMT MIT
       SVID, AT&T, POSIX, X/OPEN, BSD 4.3.

AUTOREN
       Drew Eckhardt, Michael Haardt, Ian Jackson und Martin Schulze.  Ins
       Deutsche übersetzt von Martin Schulze (joey@infodrom.north.de).

SIEHE AUCH
       open(2), dup2(2), F_DUPFD(2), F_GETFD(2), F_GETFL(2), F_GETLK(2),
       socket(2).



Linux                            27. Januar 1996                        FCNTL(2)