1. NOM

umount, umount2 - Démonter un système de fichier

2. SYNOPSIS

 
Sélectionnez
#include <sys/mount.h>
int umount(const char *target);
int umount2(const char *target, int flags);

3. DESCRIPTION

umount() et umount2() suppriment l'attachement du système de fichiers (le plus récemment) monté sur le répertoire target. Les privilèges appropriés 'sous Linux : la capacité CAP_SYS_ADMIN) est requise pour démonter des systèmes de fichiers. Depuis Linux 2.1.116 l'appel système umount2() fonctionne comme umount(), mais dispose d'options supplémentaires (flags) configurant le comportement de l'opération :

  • MNT_FORCE (depuis Linux 2.1.116)
        Forcer le démontage, même si le système de fichiers est occupé. Cela peut causer des pertes de données (seulement pour les montages NFS).
  • MNT_DETACH (depuis Linux 2.4.11)
        Faire un détachement paresseux : rendre le point de montage invalide pour les nouveaux accès, et réaliser le démontage complet lorsque le point ne sera plus occupé.
  • MNT_EXPIRE (depuis Linux 2.6.8)
        Marquer le point de montage comme ayant expiré. Si un point de montage n'est pas utilisé, un premier appel à umount2() avec ce paramètre échoue avec l'erreur EAGAIN, mais marque le point de montage comme expiré. Il reste dans cet état tant qu'aucun processus n'y accède. Un second appel à umount2() avec MNT_EXPIRE détache le point de montage expiré. Ce paramètre ne peut être combiné avec MNT_FORCE ou MNT_DETACH.
  • UMOUNT_NOFOLLOW (depuis Linux 2.6.34) Ne pas démonter target s'il s'agit d'un lien symbolique. Ce paramètre permet d'éviter des problèmes de sécurité dans des programmes set-UID-root qui permettent aux utilisateurs ordinaires de démonter des systèmes de fichiers.

4. VALEUR RENVOYÉE

S'il réussit, cet appel système renvoie 0. S'il échoue, il renvoie -1 et remplit errno en conséquence.

5. ERREURS

Les erreurs détaillées ici sont indépendantes du type de système de fichiers. Chaque type de système peut avoir des codes d'erreurs spécifiques, et un comportement particulier. Consultez les sources du noyau Linux pour plus de précisions.

  • EAGAIN
        Un appel à umount2() avec l'attribut MNT_EXPIRE a marqué correctement un système de fichiers non utilisé comme expiré.
  • EBUSY
        target ne peut pas être démonté car il est occupé.
  • EFAULT
        target pointe en dehors de l'espace d'adressage de l'utilisateur.
  • EINVAL
        target n'est pas un point de montage. Ou umount2() a été appelé avec l'option MNT_EXPIRE, en même temps que MNT_DETACH ou MNT_FORCE.
  • ENAMETOOLONG
        Un des arguments est plus long que MAXPATHLEN.
  • ENOENT
        Un des chemins est vide ou a un composant inexistant.
  • ENOMEM
        Le noyau n'a pas pu allouer suffisamment de mémoire.
  • EPERM
        L'appelant n'a pas les privilèges appropriés.

6. VERSIONS

MNT_DETACH et MNT_EXPIRE sont disponibles depuis la glibc 2.11.

7. CONFORMITÉ

Ces fonctions sont spécifiques à Linux et ne doivent pas être employées dans des programmes destinés à être portables.

8. NOTES

La fonction umount d'origine était invoquée avec umount(device) et renvoyait ENOTBLK si l'argument était autre chose qu'un périphérique bloc. Dans Linux 0.98p4 un appel umount(répertoire) fut ajouté, afin de gérer des périphériques anonymes. Dans Linux 2.3.99-pre7 l'appel umount(device) fut supprimé, en ne gardant que umount(répertoire) (car maintenant les périphériques peuvent être montés en plusieurs endroits, et l'indication du périphérique ne suffit plus).

9. VOIR AUSSI

10. COLOPHON

Cette page fait partie de la publication 3.52 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/.

11. 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/>.

Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».