Linux
man-pages-fr
French version of the Linux man-pages
manpages-dev
Manual pages about using GNU/Linux for development
man-pages
Linux kernel and C library user-space interface documentation
NOM
fanotify_mark - Ajouter, supprimer ou modifier une marque fanotify sur un objet de système de fichiers
SYNOPSIS
#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
COLOPHON
Cette page fait partie de la publication 3.70 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>.
Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».