Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
[Actualités]
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
[Actualités]
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
[Actualités]
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tr...
[Actualités]
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélÃ...
[Actualités]
WhatsApp nous permet désormais de réagir à un message en « tirant des confet...
[Actualités]
Les pliables ne décollent pas ? Samsung réduit ses plans de production
[Actualités]
PS5, Sony bannit-il les utilisateurs qui utilisent le navigateur "caché" de la ...
[Actualités]
Test The Thing Remastered (PS5) - Une refonte du classique de 2002
[Actualités]
L'iPhone le plus fin de tous les temps sera aussi le moins cher : ce que l'on sa...
[Articles]
Legacy of Kain Soul Reaver 1&2 Remastered
[Articles]
The Thing Remastered
[Articles]
Mario & Luigi : L'épopée fraternelle
[Articles]
Deel acquiert la plateforme mondiale de gestion de la rémunération Assemble
[Articles]
Xuan Yuan Sword: The Gate of Firmament
[Articles]
Cyber-sécurité : bilan 2024 et regard vers 2025 par Andy Garth, directeur Aff...
[Articles]
Diesel Legacy: The Brazen Age
[Articles]
FANTASIAN Neo Dimension
[Articles]
Fairy Tail 2
[Articles]
Réseaux sociaux inondés d'arnaques deepfake ; Formbook, voleur d'informations ...
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] fcntl - Manipuler un descripteur de fichier. [size=18] [b]Résumé[/b] [/size] .nf [b]#include
[/b] [b]#include
[/b] [b][i]int fcntl(int fd , int cmd );[/i][/b] [b][i]int fcntl(int fd , int cmd , long arg );[/i][/b] [b][i]int fcntl(int fd , int cmd , struct flock * lock );[/i][/b] .fi [size=18] [b]Description[/b] [/size] [b]fcntl[/b] permet de se livrer à diverses opérations sur le descripteur de fichier [b]fd .[/b] L'opération en question est déterminée par la valeur de l'argument [b]cmd .[/b] [b]Manipulation de close-on-exec[/b] [b]F_DUPFD[/b] [table][row][col] [/col][col]Trouve le plus petit numéro de descripteur libre supérieur égal à [i]arg[/i] et le transforme en copie de [b]fd .[/b] Ceci est différent de [b]dup (2)[/b] qui utilise exactement le descripteur transmis. Le nouveau et l'ancien descripteurs deviennent interchangeables. Ils partagent les verrous, l'indicateur de position et les attributs. Si par exemple la tête de lecture/écriture est déplacée en utilisant [b]lseek[/b] sur l'un des deux descripteurs, la position sera aussi modifiée pour l'autre. Les deux descripteurs ne partagent toutefois pas l'attribut Close-on-exec. L'attribut Close-on-exec de la copie est désactivé, ce qui signifie qu'il ne sera pas fermé lors d'un exec(). En cas de réussite, le nouveau descripteur est renvoyé.[/col][/row][/table] [b]F_GETFD[/b] [table][row][col] [/col][col]Retourne la valeur de l'attribut Close-on-exec. Si le bit [b]FD_CLOEXEC[/b] est 0, le fichier restera ouvert même au travers d'un [b]exec ,[/b] autrement il sera fermé.[/col][/row][/table] [b]F_SETFD[/b] [table][row][col] [/col][col]Positionne l'attribut Close-on-Exec avec la valeur précisée par le bit [b]FD_CLOEXEC[/b] de [b]arg .[/b][/col][/row][/table] [b]Attribut détat du fichier[/b] Un descripteur de fichier dispose de certains attributs, initialisés par [b]open (2)[/b] et eventuellement modifiés par [b]fcnt (2).[/b] Les attributs sont partagés entre les copies (obtenues avec [b]dup (2),[/b] [b]fork(2),[/b] etc.) du même descripteur de fichier. Les attributs et leurs sémantiques sont décrits dans la page [b]open (2).[/b] [b]F_GETFL[/b] [table][row][col] [/col][col]Renvoie l'attribut d'état du descripteur.[/col][/row][/table] [b]F_SETFL[/b] [table][row][col] [/col][col]Fixe les nouveaux attributs pour le descripteur de fichier à la valeur indiquée par [b]arg .[/b] Les bits restants (mode d'accès, attributs de création) de [i]arg[/i] sont ignorés. Sous Linux, cette commande ne peut changer que O_APPEND, O_NONBLOCK, O_ASYNC, et O_DIRECT.[/col][/row][/table] [b]Verrouillages coopératifs[/b] [b]F_GETLK , F_SETLK et F_SETLKW[/b] servent à gérer les verrouillages d'enregistrements (de segments ou de régions de fichiers). Le troisième argument [i]lock[/i] est un pointeur sur une structure qui a au moins les champs suivants (dans un ordre non spécifié). .in +2n .nf struct flock { ... short l_type; /* Type de verrouillage : F_RDLCK, F_WRLCK, F_UNLCK */ short l_whence; /* Interprétation de l_start: SEEK_SET, SEEK_CUR, SEEK_END */ off_t l_start; /* Décalage de début du verrouillage */ off_t l_len; /* Nombre d'octets du verrouillage */ pid_t l_pid; /* PID du processus bloquant notre verrou (F_GETLK seulement) */ ... }; .fi .in -2n Les champs [b]l_whence , l_start , et l_len[/b] de cette structure indiquent l'intervalle à verrouiller. [i]l_start[/i] est le décalage de début du verrouillage et s'interpréte par rapport : au début du fichier (si [i]l_whence[/i] vaut [b]SEEK_SET );[/b] à la position actuelle dans le fichier (si [i]l_whence[/i] vaut [b]SEEK_CUR );[/b] ou la fin du fichier (si [i]l_whence[/i] vaut [b]SEEK_END ).[/b] Dans les deux derniers cas, [i]l_start[/i] peut être un nombe négatif, à condition de ne pas indiquer une position avant le début du fichier. [i]l_len[/i] est un entier non-négatif (mais voir les NOTES plus bas) indiquant le nombre d'octets à verrouiller. On peut verrouiller des octets après la fin du fichier, mais pas avant son début. Fournir un 0 dans [i]l_len[/i] a un sens particulier : verrouiller tous les octets de la position indiquée par [b]l_whence et l_start[/b] jusqu'à la fin du fichier, quelque soit sa taille. Le champ [i]l_type [/i] peut servir à placer un verrou en lecture [b]( F_RDLCK )[/b] ou en écriture [b]( F_WDLCK )[/b] sur u fichier. Un nombre quelconque de processus peuvent tenir un verrou en lecture (partagé), sur une région d'un fichier, mais un seul peut avoir un verrou en écriture (exclusif). Un verrou en écriture exclut tous les autres verrous, aussi bien en lecture qu'en écriture. Un processus donné ne peut tenir qu'un seul verrou sur une région d'un fichier, si un nouveau verrou y est appliqué, alors le verrou précédent est converti suivant le noà uveau type. Ceci peut entraîner le découpage, la réduction ou l'extension du verrou existant si le nombre d'octets du nouveau verrou ne coincide pas exactement avec celuin de l'ancien. [b]F_SETLK[/b] [table][row][col] [/col][col]Acquérir (si [b]l_type[/b] vaut [b]F_RDLCK[/b] ou [b]F_WRLCK )[/b] ou libérer (si [b]l_type[/b] vaut [b]F_UNLCK )[/b] le verrou sur les octets indiqués par les champs [b]l_whence , l_start , et l_len[/b] de [b]lock .[/b] Si un conflit avec un verrou tenu par un autre processus existe, cet appel renvoie -1 et positionne [i]errno[/i] aux valeurs [b]EACCES[/b] ou [b]EAGAIN .[/b][/col][/row][/table] [b]F_SETLKW[/b] [table][row][col] [/col][col]Comme [b]F_SETLK,[/b] mais attend la libération du verrou au lieu de retourner une erreur. Si un signal à intercepter est reçu pendant l'attente, l'appel est interrompu et renverra immédiatement (après retour du gestionnaire de signaux) la valeur -1. [i]errno[/i] sera remplie avec la valeur [b]EINTR .[/b][/col][/row][/table] [b]F_GETLK[/b] [table][row][col] [/col][col]En entrée dans cette routine, [i]lock[/i] décrit un verrou que nous aimerions placer sur le fichier. Si le verrouillage est possible, [b]fcntl ()[/b] ne le fait pas, mais renvoie [b]F_UNLCK[/b] dans le champ [i]l_type[/i] de [i]lock[/i] et laisse les autres champs de la structure inchangés. Si un ou plusieurs verrouillages incompatibles empêcheraient l'action, alors [b]fcntl ()[/b] renvoie des informations sur l'un de ces verrous dans les champs [b]l_type , l_whence , l_start , et l_len[/b] de [i]lock[/i] et remplit [i]l_pid[/i] avec le PID du processus tenant le verrou.[/col][/row][/table] Pour pouvoir placer un verrou en lecture, [i]fd[/i] doit être ouvert en lecture au moins. Pour placer un verrou en écriture, [i]fd[/i] doit être ouver en écriture. Pour placer les deux types de verrous, il faut une ouverture en lecture-écriture. Outre la suppression par un [b]F_UNLCK [/b] explicite, les verrous sont automatiquement libérés lorsque le processus se termine, ou s'il ferme [i]l'un[/i] des descripteurs se réfèrant au fichier sur lequel le verrou est placé. C'est dangereux : cela signifie qu'un processus peut perdre un verrou sur un fichier comme [i]/etc/passwd[/i] ou [i]/etc/mtab[/i] si pour une raison quelconque une fonction de bibliothèque décide de l'uvrir puis de le refermer. Les verrouillages d'enregistrements ne sont pas hérités par les enfants lors d'un [b]fork (2),[/b] mais sont préservés au cours d'un [b]execve (2).[/b] À cause des buffers gérés par la bibliothèque [b]stdio (3),[/b] l'utilisation des verrous d'enregistrements avec les routines de celle-ci est déconseillé. Utilisez [b]read (2) et write (2)[/b] plutôt. [b]Verrouillage obligatoire[/b] (NON-POSIX) Les verrouillages d'enregistrements ci-dessus peuvent être coopératifs ou impératifs (coopératifs par défaut). Pour utiliser des verrous impératifs, ce type de verrouillage doit être activé sur le système de fichiers contenant le fichier à verrouiller (en utilisant l'option "-o mand" de [b]mount (8))[/b] et validé pour le fichier lui-même (en désactivant la permission d'exécution du groupe et en activant le bit de permission Set-GID). Les verrouillages coopératifs ne fonctionnent qu'entre processus qui les utilisent. Les verrouillages impératifs fonctionnent avec tous les processus. [b]Gestion des signaux[/b] [b]F_GETOWN , F_SETOWN , F_GETSIG et F_SETSIG[/b] servent à gérer lies signaux de disponibilité d'entrée/sortie : [table][row][col] [/col][col]F_GETOWN obtient le PID ou l'ID du groupe de processus qui reçoit les signaux SIGIO et SIGURG pour les événements concernant le descripteur de fichier [b]fd .[/b] Les groupes de processus sont renvoyés sous forme de valeurs négatives.[/col][/row][/table] [table][row][col] [/col][col]F_SETOWN fixe le PID ou l'ID du groupe de processus qui recevront les signaux SIGIO et SIGURG pour les événements concernant le descripteur [b]fd .[/b] Les groupes de processus sont formulés en tant que valeurs négatives. [b]( F_SETSIG[/b] peut servir à indiquer un autre signal que SIGIO). Si vous fixez l'attribut [b]O_ASYNC[/b] sur un descripteur de fichier (soit en utilisant ce drapeau lors de l'appel à [b]open (2),[/b] soit en utilisant la commande [b]F_SETFL[/b] de [b]fcntl ),[/b] un signal SIGIO est envoyé dès que l'entrée ou la sortie sont possibles sur ce descripteur. Le processus, ou le groupe de processus, susceptibles de recevoir le signal peut être indiqué avec la commande [b]F_SETOWN [/b] de la fonction [b]fcntl .[/b] Si le descripteur est une socket, ceci permet également la réception de signaux SIGURG lorsque des données hors-bande arrivent sur la socket. (SIGURG est émis dans toutes les situations où l'appel [b]select (2)[/b] aurait indiqué que la socket est dans une "situation exceptionnelle"). Si le descripteur de fichier correspond à un terminal, le signal SIGIO est envoyé au groupe de processus en avant-plan sur ce terminal.[/col][/row][/table] [b]F_GETSIG[/b] [table][row][col] [/col][col]Renvoie le numéro du signal émis lorsque l'entrée ou la sortie deviennent possibles. Une valeur nulle signifie l'émission de SIGIO. Toute autre valeur (y compris SIGIO) précise le signal émis, et des informations supplémentaires seront disponibles pour le gestionnaire s'il est installé avec SA_SIGINFO.[/col][/row][/table] [b]F_SETSIG[/b] [table][row][col] [/col][col]Indique le signal à émettre lorsque l'entrée ou la sortie deviennent possibles. Une valeur nulle signifie l'émission de SIGIO. Toute autre valeur (y compris SIGIO) précise le signal à émettre, et des informations supplémentaires seront disponibles pour le gestionnaire s'il est installé avec SA_SIGINFO. En utilisant F_SETDIG avec une valeur non-nulle, et en configurant SA_SIGINFO pour le gestionnaire (voir [b]sigaction (2)),[/b] des informations supplémentaires sur les événements d'E/S sont fournies au gestionnaire à travers une structure [b]siginfo_t .[/b] Si le champ [i]si_code[/i] indique que la source est SI_SIGIO, le champ [i]si_fd[/i] fournit le descripteur du fichier concerné par l'événement. Sinon il n'y a pas d'indication du descripteur en attente, et il faut utiliser le mécanisme habituel [b]( select (2),[/b] [b]poll (2),[/b] [b]read (2)[/b] avec [b]O_NONBLOCK[/b] configuré etc.) pour déterminer quels descripteurs sont disponibles pour les E/S. En sélectionnant un signal temps réel POSIX.1b (valeur >= SIGRTMIN), de multiples événements d'E/S peuvent être mémorisés avec le même numéro. Des informations supplémentaires sont disponibles, comme ci-dessus, si SA_SIGINFO est configuré pour le gestionnaire.[/col][/row][/table] En utilisant ces mécanismes, un programme peut implémenter des E/S totalement asynchrones, la plupart du temps sans avoir besoin d'invoquer [b]select (2)[/b] ou [b]poll (2).[/b] L'utilisation de [b]O_ASYNC , [/b] [b]F_GETOWN , [/b] .BB F_SETOWN est spécifique BSD et Linux. [b]F_GETSIG[/b] et [b]F_SETSIG[/b] sont spécifiques à Linux. POSIX disposent d'E/S asynchrones et de la structure [i]aio_sigevent[/i] pour effectuer la même chose. Ceci est également disponible sous Linux dans la bibliothèque GNU C (Glibc). [b]Bails[/b] [b]F_SETLEASE[/b] et [b]F_GETLEASE[/b] (depuis Linux 2.4) servent respectivement à établir et consulter le paramétrage du bail dont le processus appelant dispose sur le fichier indiqué par [b]fd .[/b] [NDT : Je traduis "lease" par "bail", faute de terme plus techique.] Le bail sur un fichier fournit un mécanisme par lequel un processus détenteur du bail est averti (par délivrance d'un signal) lorsqu'un autre processus (le concurrent) essaye d'appeler [b]open (2)[/b] ou [b]truncate (2)[/b] sur ce fichier. [b]F_SETLEASE[/b] [table][row][col] [/col][col]Fixe ou supprime un bail de fichier en fonction de la valeur fournie dans l'entier [b]arg :[/b] [table][row][col] [/col][col][/col][/row][/table] [b]F_RDLCK[/b] [table][row][col] [/col][col]Prendre un bail en lecture. Le processus sera prévenu lorsqu'un autre processus ouvrira le fichier en écriture ou le tronquera.[/col][/row][/table] [b]F_WRLCK[/b] [table][row][col] [/col][col]Prendre un bail en écriture. Le processus sera prévenu lorsqu'un autre processus ouvrira le fichier (en lecture ou écriture) ou le tronquera. Un bail en écriture ne peut être pris sur fichier que si aucun autre processus ne l'a actuellement ouvert.[/col][/row][/table] [b]F_UNLCK[/b] [table][row][col] [/col][col]Supprimer le bail sur un fichier.[/col][/row][/table][/col][/row][/table] Un processus ne peut prendre qu'un seul type de bail sur un fichier. Les bails ne peuvent être pris que sur des fichiers normaux. Un processus non-privilégié ne peut prendre un bail que sur un fichier dont l'UID correspond au FS-UID du processus. [b]F_GETLEASE[/b] [table][row][col] [/col][col]Indique le type de bail possédé sur le fichier indiqué par [i]fd[/i] en renvoyant [b]F_RDLCK , F_WRLCK , ou F_UNLCK,[/b] pour signifiquer respectivement que le processus appelant a un bail en lecture, écriture, ou pas de bail sur le fichier. (Le troisième argument de [b]fcntl () [/b] est omis).[/col][/row][/table] Quand le concurrent appelle [b]open ()[/b] ou [b]truncate ()[/b] en conflit avec un bail établi par [b]F_SETLEASE ,[/b] l'appel-système est bloqué par le noyau (sauf si l'attribut [b]O_NONBLOCK[/b] est indiqué avec [b]open (),[/b] auquel cas il revient tout de suite avec l'erreur [b]EWOULDBLOCK ).[/b] Le noyau averti le processus tenant le bail par l'envoi d'un signal (SIGIO par défaut). Le tenant du bail doit répondre à ce signal en effectuant tout le nettoyage nécessaire pour que le fichier soit accessible par un autre processus (par ex. en vidant des buffers internes) et en supprimant le bail en appelant la commande [b]F_SETLEASE[/b] avec [i]arg[/i] valant [b]F_UNLCK . [/b] Si le détenteur du bail n'arrive pas à le libérer avant le nombre de secondes indiqué dans seconds specified in [i]/proc/sys/fs/lease-break-time[/i] et si l'appel-système du concurrent reste bloqué (il n'y avait pas d'option [b]O_NONBLOCK[/b] durant l'appel [b]open (),[/b] et l'appel-système n'a pas été interrompu par un gestionnaire de signal) alors, le noyau va rompre de focre le bail du processus qui le tient. Dès que le bail a été, de gré ou de force, résilié et en supposant que le concurrent n'a pas débloqué son appel-système, le noyau permet à se dernier de se dérouler. Le signal de notification par défaut pour le tenant du bail est SIGIO, mais on peut le modifier avec la commande [b]F_SETSIG[/b] de la fonction [b]fcntl ().[/b] Si une commande [b]F_SETSIG[/b] est réalisée (même pour SIGIO), et si le gestionnaire de signal est installé avec SA_SIGINFO, alors il recevra une structure [i]siginfo_t[/i] en second argument, et le champ [i]si_fd[/i] contiendra le descripteur de fichier du bail où il y a eu une tentative d'accès par un autre processus. (Ceci sert si le processus tient des bails sur plusieurs fichiers). [b]Notification de modification de fichier et de répertoire[/b] [b]F_NOTIFY[/b] [table][row][col] [/col][col](nouveauté Linux 2.4) Fournit un avertissement lorsque le répertoire correspondant à [i]fd[/i] ou l'un des fichiers qu'il contient est modifié. Les évènements à notifier sont précisé dans [b]arg ,[/b] sous forme de masque regroupant par un OU binaire zéro, une ou plusieurs des constantes suivantes : .TS l l ---- lB l. Bit Description (evenement dans le répertoire) DN_ACCESS Accès à un fichier (read, pread, readv) DN_MODIFY Modification d'unfichier (write, pwrite, writev, truncate, ftruncate) DN_CREATE Création d'un fichier (open, creat, mknod, mkdir, link, symlink, rename) DN_DELETE Suppression d'un fichier (unlink, renommage dans un autre répertoire, rmdir) DN_RENAME Un fichier a été renommé dans le même répertoire (rename) DN_ATTRIB Les attributs d'un fichier ont été changés (chown, chmod, utime[s]) .TE (Afin d'obtenir ces définitions, la macro _GNU_SOURCE_ doit être définie avant l'inclusion de
). Les notifications de répertoire sont habituellement uniques, et l'application doit ré-enregistrer une demande pour les notification ultérieures. Inversement, si [b]DN_MULTISHOT[/b] est incluse dans [b]arg ,[/b] les notifications resteront en effet jusqu'à une demande explicite de suppression. Une série de [b]F_NOTIFY[/b] sont cumulés, les évènements décrits dans [i]arg[/i] étant ajoutés à l'ensemble des évènements déjà surveillés. Pour supprimer les notifications de tous les évènement, il faut invoquer [b]F_NOTIFY[/b] avec [i]arg [/i] valant 0. La notification se produit par l'occurence d'un signal. Le signal par défaut est SIGIO, mais on peut le changer avec la commande [b]F_SETSIG[/b] de [b]fcntl ().[/b] Dans ce cas, le gestionnaire de signal reçoit une structure [i]siginfo_t[/i] en second argument (si le gestionnaire a été installé avec SA_SIGINFO) dont le champ [i]si_fd[/i] contient le descripteur du fichier qui a déclenché la notification (utile pour superviser plusieurs répertoires). En outre, avec [b]DN_MULTISHOT ,[/b] un signal temps-réel POSIX.1b devrait être utilisé pour la notification pour pouvoir empiler les notifications successives.[/col][/row][/table] [size=18] [b]Valeur renvoyée[/b] [/size] La valeur renvoyée par fcntl varie suivant le type d'opération : [table][row][col] [/col][col]F_DUPFD renvoie le nouveau descripteur.[/col][/row][/table] [table][row][col] [/col][col]F_GETFD renvoie l'attribut.[/col][/row][/table] [table][row][col] [/col][col]F_GETFL renvoie les attributs.[/col][/row][/table] [table][row][col] [/col][col]F_GETOWN renvoie le propriétaire du descripteur fichier.[/col][/row][/table] [b]F_GETSIG[/b] [table][row][col] [/col][col]Valeur du signal envoyé lorsque la lecture ou l'écriture deviennent possibles, ou zéro pour le comportement SIGIO traditionnel.[/col][/row][/table] [table][row][col] [/col][col]Toutes les autres commandes renvoient zéro.[/col][/row][/table] En cas d'échec -1 est renvoyé, auquel cas [i]errno[/i] contient le code d'erreur. [size=18] [b]Erreurs[/b] [/size] [b]EACCESS ou EAGAIN[/b] [table][row][col] [/col][col]L'opération est impossible à cause d'un verrou maintenu par un autre processus. Ou l'opération est impossible à cause d'une projection en mémoire effectuée par un autre processus.[/col][/row][/table] [b]EBADF[/b] [i]fs[/i] [table][row][col] [/col][col]n'est pas un descripteur de fichier ouvert, ou la commande était [b]F_SETLK[/b] ou [b]F_SETLKW[/b] et le mode d'ouverture du descripteur de fichier ne correspond pas à celui du type de verrou demandé.[/col][/row][/table] [b]EDEADLK[/b] [table][row][col] [/col][col]Le verrouillage [b]F_SETLKW[/b] conduirait à un blocage.[/col][/row][/table] [b]EFAULT[/b] [i]lock[/i] [table][row][col] [/col][col]se trouve en dehors de l'espace d'adressage.[/col][/row][/table] [b]EINTR[/b] [table][row][col] [/col][col]Pour [b]F_SETLKW ,[/b] la commande a été interrompue par un signal. Pour [b]F_GETLK et F_SETLK ,[/b] la commande a été interrompue par un signal avant la vérification ou l'acquisition du verrou. Se produit surtout lors d'un verrouillage distant (par exemple à travers NFS), mais peut également arriver localement.[/col][/row][/table] [b]EINVAL[/b] [table][row][col] [/col][col]Pour [b]F_DUPFD ,[/b] [i]arg[/i] est soit négatif, soit trop grand. Pour [b]F_SETSIG ,[/b] [i]arg[/i] n'est pas un numéro de signal correct.[/col][/row][/table] [b]EMFILE[/b] [table][row][col] [/col][col]Pour [b]F_DUPFD ,[/b] le processus a déjà ouvert le nombre maximal de descripteurs de fichiers.[/col][/row][/table] [b]ENOLCK[/b] [table][row][col] [/col][col]La table des verrous est pleine, ou le verrouillage distant (par exemple via NFS) a échoué.[/col][/row][/table] [b]EPERM[/b] [table][row][col] [/col][col]Essai d'effacement de l'attribut [b]O_APPEND[/b] sur un fichier, mais il est considéré comme en-ajout-seulement.[/col][/row][/table] [size=18] [b]Notes[/b] [/size] Les erreurs renvoyées par [b]dup2[/b] ne sont pas les mêmes que celles renvoyées par [b]F_DUPFD .[/b] Depuis le noyau 2.0, il n'y a pas d'interaction entre les verrous placé par [b]flock (2)[/b] et ceux de [b]fcntl (2).[/b] POSIX 1003.1-2001 permet à [i]l_len[/i] d'être négative (et si c'est le cas, l'intervalle décrivant le verrou couvre les octets [b]l_start + l_len[/b] jusqu'à [b]l_start -1[/b] inclus). Toutefois pour les noyaux Linux actuels, l'appel-système renvoie EINVAL dans ce cas. Plusieurs systèmes ont d'autres champs dans [i]struct flock[/i] comme, par exemple, [b]l_sysid .[/b] Clairement, [i]l_pid[/i] seul ne sera pas très utile si le processus tenant le verrou s'exécute sur une autre machine. [size=18] [b]Conformité[/b] [/size] SVr4, SVID, POSIX, X/OPEN, BSD 4.3. Seules les opérations F_DUPFD, F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK et F_SETLKW sont spécifiées dans POSIX.1. F_GETOWN et F_SETOWN sont des BSDismes non supportés par SVr4. F_GETSIG et F_SETSIG sont spécifiques à Linux. [b]F_NOTIFY , F_GETLEASE , et F_SETLEASE[/b] sont spécifiques à Linux. (Définissez la macro _GNU_SOURCE avant d'inclure
pour avoir ces définitions). Les attributs autorisés pour F_GETFL/F_SETFL sont ceux supportés par [b]open (2)[/b] et peuvent être différents suivant les systèmes. O_APPEND, O_NONBLOCK, O_RDONLY, et O_RDWR sont spécifiés par POSIX.1. SVr4 propose plusieurs autres options et attributs non documentés ici. SVr4 indique des erreurs EIO, ENOLINK et EOVERFLOW supplémentaires. [size=18] [b]Voir aussi[/b] [/size] [b]dup2 (2),[/b] [b]flock (2),[/b] [b]lockf (3),[/b] [b]open (2),[/b] [b]socket (2),[/b] Voir aussi les fichiers locks.txt, mandatory.txt et dnotify.txt dans la documentation du noyau. [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Windows
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
Jeux Vidéos
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
Tablettes
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
Google
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tracker de Google
Consoles
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélés par un leaker ?
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?