Sous-routine fclear ou fclear64

Objectif

Fait un trou dans un fichier.

Bibliothèque

Bibliothèque C standard (libc.a)

Syntaxe

off_t fclear ( FileDescriptor,  NumberOfBytes)
int FileDescriptor;
off_t NumberOfBytes;

off64_t fclear64 ( FileDescriptor,  NumberOfBytes)
int FileDescriptor;
off64_t NumberOfBytes;

Descriptif

Les sous-programmes fclear et fclear64 mettent à zéro le nombre d'octets spécifié par le paramètre NumberOfBytes à partir du pointeur de fichier actuel pour le fichier spécifié dans le paramètre FileDescriptor. Si Network File System (NFS) est installé sur votre système, ce fichier peut résider sur un autre noeud.

La sous-routine Fclear ne peut effacer que OFF_MAX octets du fichier alors que fclear64 peut effacer jusqu'à la taille maximale du fichier.

Les sous-routines Fclear et fclear64 ne peuvent pas être appliquées à un fichier ouvert par un processus avec le mode O_REPORT .

L'exécution des sous-programmes fclear et fclear64 efface le bit SetUserID(S_ISUID) du fichier si l'une des conditions suivantes est remplie :

  • Le processus appelant ne dispose pas des droits utilisateur root.
  • L'ID utilisateur effectif du processus appelant ne correspond pas à l'ID utilisateur du fichier.
  • Le fichier est exécutable par le groupe (S_IXGRP) ou d'autres (S_IXOTH).

Ce sous-programme efface également le bit SetGroupID(S_ISGID) si :

  • Le fichier ne correspond pas à l'ID de groupe effectif ou à l'un des ID de groupe supplémentaires du processus,

    OR

  • Le fichier est exécutable par le propriétaire (S_IXUSR) ou d'autres (S_IXOTH).
    Remarque : l'effacement des bits SetUserID et SetGroupID peut se produire même si le sous-programme échoue parce que les données du fichier ont été modifiées avant la détection de l'erreur.

Dans l'environnement de programmation activé pour les fichiers volumineux, Fclear est redéfini pour être fclear64.

Paramètres

Article Descriptif
FileDescriptor Indique que le fichier spécifié par le paramètre FileDescriptor doit être ouvert en écriture. FileDescriptor est un petit entier positif utilisé à la place du nom de fichier pour identifier un fichier. Cette fonction diffère de l'opération d'écriture logiquement équivalente en ce qu'elle renvoie des blocs complets de zéros binaires au système de fichiers, en construtant des trous dans le fichier.
NumberOfBytes Indique le nombre d'octets que le pointeur de recherche est avancé. Si vous utilisez les sous-programmes fclear et fclear64 après la fin d'un fichier, le reste du fichier est effacé et le pointeur de recherche est avancé d'un NumberOfBytes. La taille du fichier est mise à jour pour inclure ce nouveau trou, ce qui laisse la position du fichier en cours sur l'octet immédiatement après le nouveau pointeur de fin de fichier.

Valeurs renvoyées

En cas de succès, la valeur NumberOfBytes est renvoyée. Dans le cas contraire, la valeur -1 est renvoyée et la variable globale errno est définie pour indiquer l'erreur.

Codes d'erreur

Les sous-routines Fclear et fclear64 échouent si une ou plusieurs des opérations suivantes sont vraies:

Article Descriptif
EIO Erreur d'E-S.
EBADF La valeur FileDescriptor n'est pas un descripteur de fichier valide ouvert en écriture.
EINVAL Le fichier n'est pas un fichier standard.
EMFICHIER Le fichier est mappé O_REPORT par un ou plusieurs processus.
ENCORE UNE FOIS L'opération d'écriture dans la sous-routine Fclear a échoué en raison d'un verrou en écriture forcée sur le fichier.
Article Descriptif
EFBIG Le décalage actuel plus le NumberOfBytes dépasse le décalage maximum établi dans la description du fichier ouvert associé à FileDescriptor.
Article Descriptif
EFBIG Une tentative d'écriture d'un fichier qui dépasse la limite de taille de fichier du processus ou la taille maximale du fichier a été effectuée. Si l'utilisateur a défini la variable d'environnement XPG_SUS_ENV = SUR avant l'exécution du processus, le signal SIGXFSZ est affecté au processus en cas de dépassement de la limite de taille de fichier du processus.

Si NFS est installé sur le système, les sous-routines fclear et fclear64 peuvent également échouer si les conditions suivantes sont remplies:

Article Descriptif
ETIMEDOUT La connexion a expiré.