Provided by: manpages-fr-dev_3.57d1p1-1_all bug

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.57 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     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

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