FANOTIFY_MARK
Manuel du programmeur Linux (2)24 avril 2014
NOM
fanotify_mark - Ajouter, supprimer ou modifier une marque fanotify sur un objet de système de fichiersSYNOPSIS
#include <sys/fanotify.h> int fanotify_mark(int fanotify_fd, unsigned int flags, uint64_t mask, int dirfd, const char *pathname);
DESCRIPTION
Pour un aperçu de l’interface de programmation fanotify, consultez fanotify(7).fanotify_mark ajoute, supprime ou modifie une marque fanotify sur un objet de système de fichiers. L’appelant doit avoir le droit de lecture sur l’objet de système de fichiers à marquer.
L’argument fanotify_fd est un descripteur de fichier renvoyé par fanotify_init(2).
flags est un masque binaire décrivant la modification à réaliser. Il doit contenir exactement une des valeurs suivantes.
- FAN_MARK_ADD
- Les événements dans mask seront ajoutés au masque de marque (ou au masque ignore). mask doit être non vide sinon l’erreur EINVAL surviendra.
- FAN_MARK_REMOVE
- Les événements dans l’argument mask seront supprimés du masque de marque (ou du masque ignore). mask doit être non vide sinon l’erreur EINVAL surviendra.
- FAN_MARK_FLUSH
- Supprimer toutes les marques de montage ou de non montage du groupe fanotify. Si flag contient FAN_MARK_MOUNT, toutes les marques de montage seront supprimées du groupe. Sinon, toutes les marques des répertoires et fichiers seront supprimées. Aucun autre attribut que FAN_MARK_MOUNT ne peut être utilisé avec FAN_MARK_FLUSH. mask est ignoré.
Si aucune des valeurs précédentes n’est indiquée, ou si plus d’une est indiquée, l’appel échoue avec l'erreur EINVAL.
De plus, zéro ou plus des valeurs suivantes peuvent être incluses dans flags (avec un OU binaire).
- FAN_MARK_DONT_FOLLOW
- Si pathname est un lien symbolique, marquer le lien lui-même, plutôt que le fichier pointé (par défaut, fanotify_mark() déréférence pathname si c’est un lien symbolique).
- FAN_MARK_ONLYDIR
- Si l’objet de système de fichiers à marquer n’est pas un répertoire, l’erreur ENOTDIR surviendra.
- FAN_MARK_MOUNT
- Marquer le point de montage indiqué par pathname. Si pathname n’est pas un point de montage lui-même, le point de montage contenant pathname sera marqué. Tous les répertoires, sous-répertoires et fichiers contenus dans le point de montage seront surveillés.
- FAN_MARK_IGNORED_MASK
- Les événements dans mask seront ajoutés ou supprimés du masque ignore.
- FAN_MARK_IGNORED_SURV_MODIFY
- Le masque ignore survivra aux événements de modification. Si cet attribut n’est pas défini, le masque ignore est effacé quand un événement de modification survient pour le fichier ou répertoire ignorés.
mask définit les événements à écouter (ou à ignorer). C’est un masque binaire constitué par les valeurs suivantes.
- FAN_ACCESS
- Créer un événements quand un fichier ou un répertoire (mais consultez BOGUES) est accédé (en lecture).
- FAN_MODIFY
- Créer un événements quand un fichier est modifié (en écriture).
- FAN_CLOSE_WRITE
- Créer un événements quand un fichier modifiable en écriture est fermé.
- FAN_CLOSE_NOWRITE
- Créer un événements quand soit un fichier, soit un répertoire, en lecture seule est fermé.
- FAN_OPEN
- Créer un événements quand soit un fichier, soit un répertoire, est ouvert.
- FAN_OPEN_PERM
- Créer un événement quand une permission d’ouvrir un fichier ou un répertoire est demandée. Un descripteur de fichier fanotify créé avec FAN_CLASS_PRE_CONTENT ou FAN_CLASS_CONTENT est nécessaire.
- FAN_ACCESS_PERM
- Créer un événement quand une permission de lire un fichier ou un répertoire est demandée. Un descripteur de fichier fanotify créé avec FAN_CLASS_PRE_CONTENT ou FAN_CLASS_CONTENT est nécessaire.
- FAN_ONDIR
- Créer des événements pour les répertoires – par exemple, quand opendir(2), readdir(2) (mais consultez BOGUES) et closedir(2) sont appelés. Sans cet attribut, seuls les événements pour des fichiers sont créés.
- FAN_EVENT_ON_CHILD
- Des événements pour les enfants intermédiaires des répertoires marqués seront créés. L’attribut n’a pas d’effet lors du marquage de montages. Remarquez qu’aucun événement n’est créé pour les enfants des sous-répertoires des répertoires marqués. Pour surveiller des arborescences complètes de répertoires, le montage adéquat doit être marqué.
La valeur composée suivante est définie :
- FAN_CLOSE
- Un fichier est fermé (FAN_CLOSE_WRITE|FAN_CLOSE_NOWRITE).
L’objet de système de fichiers à marquer est déterminé par le descripteur de fichier dirfd et le chemin indiqué dans pathname :
- -
- si pathname est NULL, dirfd définit l’objet de système de fichiers à marquer ;
- -
- si pathname est NULL et que dirfd prend la valeur spéciale AT_FDCWD, le répertoire de travail actuel est à marquer ;
- -
- si pathname est absolu, il définit l’objet de système de fichiers à marquer et dirfd est ignoré ;
- -
- si pathname est relatif et que dirfd n’a pas la valeur AT_FDCWD, alors l’objet de système de fichiers à marquer est déterminé en interprétant pathname comme relatif au répertoire référencé par dirfd ;
- -
- si pathname est relatif et que dirfd a la valeur AT_FDCWD, alors l’objet de système de fichiers à marquer est déterminé en interprétant pathname comme relatif au répertoire de travail actuel.
VALEUR RENVOYÉE
S'il réussit, fanotify_mark() renvoie 0. En cas d'erreur, il renvoie -1 et remplit errno avec la valeur d'erreur.ERREURS
- EBADF
- Un descripteur de fichier incorrect à été passé dans fanotify_fd.
- EINVAL
- Une valeur incorrecte à été passée dans flags ou mask, ou fanotify_fd n'était pas un descripteur de fichier fanotify.
- EINVAL
- Le descripteur de fichier fanotify a été ouvert avec FAN_CLASS_NOTIF et le masque contient un attribut pour des événements de permission (FAN_OPEN_PERM ou FAN_ACCESS_PERM).
- ENOENT
- L’objet de système de fichiers indiqué par dirfd et pathname n’existe pas. Cette erreur survient aussi lors d’une tentative de supprimer un masque d’un objet qui n’est pas marqué.
- ENOMEM
- La mémoire nécessaire n’a pas pu être allouée.
- ENOSPC
- Le nombre de marques dépasse la limite de 8192 et l’attribut FAN_UNLIMITED_MARKS n’était pas indiqué quand le descripteur de fichier fanotify a été créé avec fanotify_init(2).
- ENOSYS
- Ce noyau n’implémente pas fanotify_mark(). L’interface de programmation fanotify n'est disponible que si le noyau a été configuré avec CONFIG_FANOTIFY.
- ENOTDIR
- flags contient FAN_MARK_ONLYDIR, et dirfd et pathname n’indiquent pas de répertoire.
VERSIONS
fanotify_mark() a été introduit dans la version 2.6.36 du noyau Linux et activé dans la version 2.6.37.CONFORMITÉ
Cet appel système est spécifique à Linux.BOGUES
Dans Linux 3.15, les bogues suivants existent :- -
- si flags contient FAN_MARK_FLUSH, dirfd et pathname doivent indiquer un objet de système de fichiers valable, même si cet objet n’est pas utilisé ;
- -
- readdir(2) ne crée pas d’événement FAN_ACCESS ;
- -
- si fanotify_mark(2) est appelé avec FAN_MARK_FLUSH, les valeurs incorrectes de flags ne sont pas vérifiées.
VOIR AUSSI
fanotify_init(2), fanotify(7)COLOPHON
Cette page fait partie de la publication 3.66 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.
Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- VERSIONS
- CONFORMITÉ
- BOGUES
- VOIR AUSSI
- COLOPHON
- TRADUCTION
This document was created by man2html, using the manual pages.
Time: 21:52:34 GMT, July 12, 2014