kcmp

KCMP(2)                   Manuel du programmeur Linux                  KCMP(2)



NOM
       kcmp - compare deux processus afin de déterminer s'ils partagent des
       ressources du noyau

SYNOPSIS
       #include <linux/kcmp.h>

       int kcmp(pid_t pid1, pid_t pid2, int type,
                unsigned long idx1, unsigned long idx2);

       Note : Il n'existe pas de fonction d'encapsulation dans glibc pour cet
       appel système ; consultez NOTES.

DESCRIPTION
       L'appel système  kcmp() peut être utilisé pour vérifier si deux
       processus identifiés par pid1 et pid2 partagent des ressources du
       noyau, telles que de la mémoire virtuelle, des descripteurs de
       fichiers, etc.

       L'argument nstype indique pour quelle ressource une comparaison doit
       être effectuée entre les deux processus. Il peut prendre l'une des
       valeurs suivantes :

       KCMP_FILE
              Vérifie si un descripteur de fichier idx1 utilisé par le
              processus pid1 fait référence à la même description de
              fichier ouvert (consultez open(2)) que le descripteur de fichier
              idx2 utilisé par le processus pid2.

       KCMP_FILES
              Vérifier si le processus partage un même ensemble de
              descripteurs de fichiers ouverts. Les arguments  idx1 et idx2 ne
              sont pas pris en compte.

       KCMP_FS
              Vérifie si les processus partagent les même informations
              relatives au système de fichiers (c'est-à -dire le masque de
              création de fichiers, le répertoire de travail, et la racine
              du système de fichiers). Les arguments idx1 et idx2 ne sont pas
              pris en compte.

       KCMP_IO
              Vérifie si les processus partagent un contexte E/S. Les
              arguments idx1 et idx2 ne sont pas pris en compte.

       KCMP_SIGHAND
              Vérifie si les processus partagent la même table de
              disposition des signaux. Les arguments idx1 et idx2 ne sont pas
              pris en compte.

       KCMP_SYSVSEM
              Vérifie si les processus partagent la même liste d'opérations
              « undo » pour les sémaphores System V. Les arguments idx1 et
              idx2 ne sont pas pris en compte.

       KCMP_VM
              Vérifie si les processus partagent le même espace d'adressage.
              Les arguments idx1 et idx2 ne sont pas pris en compte.

       Remarquez que kcmp() n'est pas à l'abri de «faux positifs» qui
       peuvent survenir si des tâches sont en cours d'exécution. Pour
       obtenir des résultats pertinents, il faut arrêter ces tâches au
       moyen de SIGSTOP (consulter signal(7)) avant de commencer l'examen des
       processus.

VALEUR RENVOYÃE
       La valeur renvoyée par un appel réussi à kcmp() est le résultat de
       la comparaison arithmétique des pointeurs du noyau (lorsque le noyau
       compare des ressources, il utilise leurs adresses en mémoire).

       Pour mieux comprendre, regardons l'exemple suivant. Supposons que v1
       and v2 sont les adresses des ressources concernées, alors la valeur
       renvoyée sera l'une des suivantes :

           0   v1 est égal à v2 ; en d'autres termes, les deux processus
               partagent la même ressource.

           1   v1 est inférieur à v2.

           2   v1 est supérieur à v2.

           3   v1 n'est pas égal à v2, mais aucune information concernant
               l'ordre des nombres n'est disponible.

       En cas d'erreur, le retour vaut -1 et errno reçoit une valeur
       correspondante.

       kcmp() a été conçu pour renvoyer des variables pouvant être
       triées. C'est particulièrement pratique lorsqu'on souhaite comparer
       un grand nombre de descripteurs de fichiers.

ERREURS
       EBADF  type est KCMP_FILE et fd1 ou fd2 n'est pas un descripteur de
              fichier ouvert.

       EINVAL type n'est pas valide.

       EPERM  Permissions insuffisantes pour inspecter les ressources du
              noyau. Le privilège CAP_SYS_PTRACE est nécessaire pour
              inspecter les processus dont vous n'êtes pas propriétaire.

       ESRCH  Au moins l'un des processus pid1 ou pid2 n'existe pas.

VERSIONS
       L'appel système setns() a fait son apparition dans la version 3.5 de
       Linux.

CONFORMITÃ
       kcmp() est spécifique à Linux et ne doit pas être utilisé dans des
       programmes conçus pour être portables.

NOTES
       Glibc ne fournit pas de fonction d'encapsulation pour cet appel
       système ; utilisez syscall(2) pour l'appeler.

       Cet appel système n'est disponible que si le noyau a été configuré
       avec CONFIG_CHECKPOINT_RESTORE. Cet appel est utilisé principalement
       pour la fonctionnalité de gel des applications (checkpoint/restore)
       dans l'espace utilisateur (CRIU). L'alternative à cet appel système
       aurait consisté à présenter les informations pertinentes concernant
       le processus via le système de fichier proc(5) ; cette solution n'a
       pas été jugée satisfaisante pour des raisons de sécurité.

       Consultez clone(2) pour obtenir des informations générales sur les
       ressources partagées dont il est fait mention dans cette page.

VOIR AUSSI
       clone(2), unshare(2)

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@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> ».



Linux                          8 décembre 2013                        KCMP(2)