Provided by: manpages-fr-dev_2.80.1-1_all bug

NOM

       syscalls - Appels système de Linux

SYNOPSIS

       Appels système de Linux.

DESCRIPTION

       L’appel  système  est l’interface fondamentale entre une application et
       le noyau Linux.

   Appels système et fonctions de bibliothèque
       Les appels système ne sont en général pas appelé  directement,  mais  à
       partir  de  fonctions  de  la glibc (ou d’une autre bibliothèque). Pour
       avoir des détails pour l’appel direct  d’un  appel  système,  consultez
       intro(2).  Souvent,  mais  pas  toujours,  le  nom de la fonction de la
       bibliothèque est le même que celui de l’appel système à  invoquer.  Par
       exemple,  la  fonction  truncate()  de la glibc invoque l’appel système
       « truncate » sous-jacent.

       Souvent, les fonctions de la glibc sont très courtes, ne réalisant  que
       quelques instructions avant d’appeler l’appel système.

       Des  fois,  cependant,  la  fonction réalise certaines opérations avant
       d’invoquer l’appel système. Par exemple, de nos jour il y a deux appels
       système   truncate(2)   et  truncate64(2)  (pour  les  raisons  données
       ci-dessous) et la fonction truncate() de la glibc vérifie quels  appels
       système  sont  fournis  par  le  noyau  et  détermine  lequel doit être
       utilisé.

   Liste des appels système
       Cette page de manuel liste ces appels système qui  sont  communs  à  la
       plupart  des  plates-formes. Dans cette liste, la colonne Noyau indique
       la version du noyau pour laquelle ils sont apparus, s’ils  sont  apparu
       après la version 2.2 de Linux. Notez les points suivants :

       *  Si  aucune  version  de  noyau  n’est  indiquée, l’appel système est
          apparu dans le noyau 2.0 ou auparavant.

       *  Quand un appel système est marqué « 2.2 », cela signifie que l’appel
          système  est  probablement apparu dans une version 2.1.x du noyau et
          est apparu la première fois dans un noyau  stable  dans  la  version
          2.2.0.  (Le  développement  du  noyau  2.2  a  débuté à partir d’une
          branche de la version 2.0.21 du noyau, au travers de la série  « non
          stable » des noyaux 2.1.x.)

       *  Quand un appel système est marqué « 2.4 », cela signifie que l’appel
          système est probablement apparu dans une version 2.3.x du  noyau  et
          est  apparu  la  première  fois dans un noyau stable dans la version
          2.4.0. (Le développement du  noyau  2.4  a  débuté  à  partir  d’une
          branche  de  la version 2.2.8 du noyau, au travers de la série « non
          stable » des noyaux 2.3.x.)

       *  Quand un appel système est marqué « 2.6 », cela signifie que l’appel
          système  est  probablement apparu dans une version 2.5.x du noyau et
          est apparu la première fois dans un noyau  stable  dans  la  version
          2.6.0.  (Le  développement  du  noyau  2.6  a  débuté à partir d’une
          branche de la version 2.4.15 du noyau, au travers de la série  « non
          stable » des noyaux 2.5.x.)

       *  A  partir  du  noyau  2.6.0, le mode de développement a changé et de
          nouveaux appels  système  pourraient  apparaître  à  chaque  version
          2.6.x.  Dans  ce  cas, le numéro de version exact où l’appel système
          est apparu est indiqué.

       *  Dans certains cas, un appel système a été ajouté à un  noyau  de  la
          série  stable  après  l’embranchement  provenant  de la série stable
          précédente, puis a été porté dans  la  série  stable  précédente  du
          noyau.  Par  exemple  certains appels système apparus dans 2.6.x ont
          été portés dans une version 2.4.x postérieure à la  version  2.4.15.
          Dans  ce  cas,  les  deux versions des deux séries majeures du noyau
          dans lesquelles l’appel système est apparu sont mentionnées.

       La liste des appels système qui sont disponibles dans la version 2.6.25
       (ou  dans certains cas pour certaines versions plus anciennes du noyau)
       est la suivante :

       Appel système               Noyau          Notes
       ------------------------------------------------------------------------

       _llseek(2)
       _newselect(2)
       _sysctl(2)
       accept(2)
       access(2)
       acct(2)
       add_key(2)                  2.6.11
       adjtimex(2)
       afs_syscall(2)
       alarm(2)
       alloc_hugepages(2)          2.5.36         Retiré dans 2.5.44
       bdflush(2)
       bind(2)
       break(2)
       brk(2)
       cacheflush(2)                              Pas sur i386
       capget(2)                   2.2
       capset(2)                   2.2
       chdir(2)
       chmod(2)
       chown(2)
       chown32(2)                  2.4
       chroot(2)
       clock_getres(2)             2.6
       clock_gettime(2)            2.6
       clock_nanosleep(2)          2.6
       clock_settime(2)            2.6
       clone(2)
       close(2)
       connect(2)
       creat(2)
       create_module(2)
       delete_module(2)
       dup(2)
       dup2(2)
       epoll_create(2)             2.6
       epoll_ctl(2)                2.6
       epoll_pwait(2)              2.6.19
       epoll_wait(2)               2.6
       eventfd(2)                  2.6.22
       execve(2)
       exit(2)
       exit_group(2)               2.6 ; 2.4.20
       faccessat(2)                2.6.16
       fadvise64(2)                2.6
       fadvise64_64(2)             2.6
       fallocate(2)                2.6.23
       fchdir(2)

       fchmod(2)
       fchmodat(2)                 2.6.16
       fchown(2)
       fchown32(2)                 2.4
       fchownat(2)                 2.6.16
       fcntl(2)
       fcntl64(2)                  2.4
       fdatasync(2)
       fgetxattr(2)                2.6 ; 2.4.18
       flistxattr(2)               2.6 ; 2.4.18
       flock(2)
       fork(2)
       free_hugepages(2)           2.5.36         Supprimé dans 2.5.44
       fremovexattr(2)             2.6 ; 2.4.18
       fsetxattr(2)                2.6 ; 2.4.18
       fstat(2)
       fstat64(2)                  2.4
       fstatat64(2)                2.6.16
       fstatfs(2)
       fstatfs64(2)                2.6
       fsync(2)
       ftime(2)
       ftruncate(2)
       ftruncate64(2)              2.4
       futex(2)                    2.6 ; 2.4.19
       futimesat(2)                2.6.16
       get_kernel_syms(2)
       get_mempolicy(2)            2.6.6
       get_robust_list(2)          2.6.17
       get_thread_area(2)          2.6 ; 2.4.20
       getcpu(2)                   2.6.19
       getcwd(2)                   2.2
       getdents(2)
       getdents64(2)               2.4
       getegid(2)
       getegid32(2)                2.4
       geteuid(2)
       geteuid32(2)                2.4
       getgid(2)
       getgid32(2)                 2.4
       getgroups(2)
       getgroups32(2)              2.4
       getitimer(2)
       getpeername(2)
       getpagesize(2)                             Pas sur i386
       getpgid(2)
       getpgrp(2)
       getpid(2)
       getpmsg(2)                  2.2
       getppid(2)
       getpriority(2)
       getresgid(2)                2.2
       getresgid32(2)              2.4
       getresuid(2)                2.2
       getresuid32(2)              2.4
       getrlimit(2)
       getrusage(2)
       getsid(2)
       getsockname(2)
       getsockopt(2)
       gettid(2)                   2.4.11
       gettimeofday(2)
       getuid(2)
       getuid32(2)                 2.4
       getxattr(2)                 2.6 ; 2.4.18

       gtty(2)
       idle(2)
       init_module(2)
       inotify_add_watch(2)        2.6.13
       inotify_init(2)             2.6.13
       inotify_rm_watch(2)         2.6.13
       io_cancel(2)                2.6 ; 2.4.20
       io_destroy(2)               2.6 ; 2.4.20
       io_getevents(2)             2.6 ; 2.4.20
       io_setup(2)                 2.6 ; 2.4.20
       io_submit(2)                2.6 ; 2.4.20
       ioctl(2)
       ioperm(2)
       iopl(2)
       ioprio_get(2)               2.6.13
       ioprio_set(2)               2.6.13
       ipc(2)
       kexec_load(2)               2.6.7
       keyctl(2)                   2.6.11
       kill(2)
       lchown(2)                   2.2
       lchown32(2)                 2.4
       lgetxattr(2)                2.6 ; 2.4.18
       link(2)
       linkat(2)                   2.6.16
       listen(2)
       listxattr(2)                2.6 ; 2.4.18
       llistxattr(2)               2.6; 2.4.18
       lock(2)
       lookup_dcookie(2)           2.6
       lremovexattr(2)             2.6 ; 2.4.18
       lseek(2)
       lsetxattr(2)                2.6 ; 2.4.18
       lstat(2)
       lstat64(2)                  2.4
       madvise(2)                  2.4
       madvise1(2)                 2.4
       mbind(2)                    2.6.6
       migrate_pages(2)            2.6.16
       mincore(2)                  2.4
       mkdir(2)
       mkdirat(2)                  2.6.16
       mknod(2)
       mknodat(2)                  2.6.16
       mlock(2)
       mlockall(2)
       mmap(2)
       mmap2(2)                    2.4
       modify_ldt(2)
       mount(2)
       move_pages(2)               2.6.18
       mprotect(2)
       mpx(2)
       mq_getsetattr(2)            2.6.6
       mq_notify(2)                2.6.6
       mq_open(2)                  2.6.6
       mq_timedreceive(2)          2.6.6
       mq_timedsend(2)             2.6.6
       mq_unlink(2)
       mremap(2)
       msgctl(2)
       msgget(2)
       msgrcv(2)
       msgsnd(2)
       msync(2)

       munlock(2)
       munlockall(2)
       munmap(2)
       nanosleep(2)
       nfsservctl(2)               2.2
       nice(2)
       oldfstat(2)
       oldlstat(2)
       oldolduname(2)
       oldstat(2)
       olduname(2)
       open(2)
       openat(2)                   2.6.16
       pause(2)
       pciconfig_iobase(2)         2.2.15; 2.4    Pas sur i386
       pciconfig_read(2)           2.0.26; 2.2    Pas sur i386
       pciconfig_write(2)          2.0.26; 2.2    Pas sur i386
       personality(2)
       phys(2)
       pipe(2)
       pivot_root(2)               2.5
       poll(2)                     2.2
       ppoll(2)                    2.6.16
       prctl(2)                    2.2
       pread64(2)                                 Ajoué en tant que « pread »
                                                  dans 2.2 ; renommé
                                                  « pread64 » dans 2.6
       prof(2)
       profil(2)
       pselect6(2)                 2.6.16
       ptrace(2)
       putpmsg(2)                  2.2
       pwrite64(2)                                Ajoué en tant que « pwrite »
                                                  dans 2.2 ; renommé
                                                  « pwrite64 » dans 2.6
       query_module(2)             2.2
       quotactl(2)
       read(2)
       readahead(2)                2.4.13
       readdir(2)
       readlink(2)
       readlinkat(2)               2.6.16
       readv(2)
       reboot(2)
       recv(2)
       recvfrom(2)
       recvmsg(2)
       remap_file_pages(2)         2.6
       removexattr(2)              2.6; 2.4.18
       rename(2)
       renameat(2)                 2.6.16
       request_key(2)              2.6.11
       restart_syscall(2)          2.6
       rmdir(2)
       rt_sigaction(2)             2.2
       rt_sigpending(2)            2.2
       rt_sigprocmask(2)           2.2
       rt_sigqueueinfo(2)          2.2
       rt_sigreturn(2)             2.2
       rt_sigsuspend(2)            2.2
       rt_sigtimedwait(2)          2.2
       sched_get_priority_max(2)
       sched_get_priority_min(2)
       sched_getaffinity(2)        2.6 ; 2.4.19
       sched_getparam(2)

       sched_getscheduler(2)
       sched_rr_get_interval(2)
       sched_setaffinity(2)        2.6 ; 2.4.19
       sched_setparam(2)
       sched_setscheduler(2)
       sched_yield(2)
       security(2)                 2.4.11
       select(2)
       semctl(2)
       semget(2)
       semop(2)
       semtimedop(2)               2.6 ; 2.4.22
       send(2)
       sendfile(2)                 2.2
       sendfile64(2)               2.6 ; 2.4.19
       sendmsg(2)
       sendto(2)
       set_mempolicy(2)            2.6.6
       set_robust_list(2)          2.6.17
       set_thread_area(2)          2.6 ; 2.4.20
       set_tid_address(2)          2.6
       set_zone_reclaim(2)         2.6.13         Retiré dans 2.6.16
                                                  (n’a jamais été disponible
                                                  pour l’espace utilisateur)
       setdomainname(2)
       setfsgid(2)
       setfsgid32(2)               2.4
       setfsuid(2)
       setfsuid32(2)               2.4
       setgid(2)
       setgid32(2)                 2.4
       setgroups(2)
       setgroups32(2)              2.4
       sethostname(2)
       setitimer(2)
       setpgid(2)
       setpriority(2)
       setregid(2)
       setregid32(2)               2.4
       setresgid(2)                2.2
       setresgid32(2)              2.4
       setresuid(2)                2.2
       setresuid32(2)              2.4
       setreuid(2)
       setreuid32(2)               2.4
       setrlimit(2)
       setsid(2)
       setsockopt(2)
       settimeofday(2)
       setuid(2)
       setuid32(2)                 2.4
       setup(2)                                   Retiré dans 2.2
       setxattr(2)                 2.6 ; 2.4.18
       sgetmask(2)
       shmat(2)
       shmctl(2)
       shmdt(2)
       shmget(2)
       shutdown(2)
       sigaction(2)
       sigaltstack(2)              2.2
       signal(2)
       signalfd(2)                 2.6.22
       sigpending(2)
       sigprocmask(2)

       sigreturn(2)
       sigsuspend(2)
       socket(2)
       socketcall(2)
       socketpair(2)
       splice(2)                   2.6.17
       spu_create(2)               2.6.16         PowerPC uniquement
       spu_run(2)                  2.6.16         PowerPC uniquement
       ssetmask(2)
       stat(2)
       stat64(2)                   2.4
       statfs(2)
       statfs64(2)                 2.6
       stime(2)
       stty(2)
       swapoff(2)
       swapon(2)
       symlink(2)
       symlinkat(2)                2.6.16
       sync(2)
       sync_file_range(2)          2.6.17
       sysfs(2)
       sysinfo(2)
       syslog(2)
       tee(2)                      2.6.17
       tgkill(2)                   2.6
       time(2)
       timer_create(2)             2.6
       timer_delete(2)             2.6
       timer_getoverrun(2)         2.6
       timer_gettime(2)            2.6
       timer_settime(2)            2.6
       timerfd_create(2)           2.6.25
       timerfd_gettime(2)          2.6.25
       timerfd_settime(2)          2.6.25
       times(2)
       tkill(2)                    2.6 ; 2.4.22
       truncate(2)
       truncate64(2)               2.4
       tuxcall(2)
       ugetrlimit(2)               2.4
       ulimit(2)
       umask(2)
       umount(2)
       umount2(2)                  2.2
       uname(2)
       unlink(2)
       unlinkat(2)                 2.6.16
       unshare(2)                  2.6.16
       uselib(2)
       ustat(2)
       utime(2)
       utimensat(2)                2.6.22
       utimes(2)                   2.6
       vfork(2)
       vhangup(2)
       vm86old(2)
       vmsplice(2)                 2.6.17
       vserver(2)                  2.6
       wait4(2)
       waitid(2)                   2.6.10
       waitpid(2)
       write(2)
       writev(2)

       Sur de nombreuses plates-formes, y compris les  i386,  les  appels  des
       sockets  sont  multiplexés  (par  des  fonctions de la glibc) à travers
       socketcall(2) et de même les IPC Système V via ipc(2).

NOTES

       Veuillez noter les points suivants :

       *  Même si des entrées ont été  réservées  dans  la  table  des  appels
          système,  les  appels  système  suivants  ne  sont pas implémentés :
          afs_syscall(2), break(2), ftime(2),  getpmsg(2),  gtty(2),  idle(2),
          lock(2),   madvise1(2),   mpx(2),   phys(2),   prof(2),   profil(2),
          putpmsg(2),   security(2),   stty(2),   tuxcall(2),   ulimit(2)   et
          vserver(2)   (voir  aussi  unimplemented(2)).  Toutefois,  ftime(3),
          profil(3) et ulimit(3) sont disponibles sous forme de  fonctions  de
          bibliothèque.  L’entrée  pour  phys(2)  est  utilisée pour umount(2)
          depuis le 2.1.116, phys(2) ne sera jamais implémenté.

       *  Les appels getpmsg(2) et putpmsg(2) sont pour  les  noyaux  modifiés
          qui  supportent les FLUX et ne seront peut-être jamais dans le noyau
          standard.

       En général, le  code  implémentant  l’appel  système  ayant  le  numéro
       __NR_xxx  dans  le  fichier /usr/include/asm/unistd.h se trouve dans la
       routine sys_xxx() du noyau. (La table de distribution pour  la  version
       i386  se  trouve  dans /usr/src/linux/arch/i386/kernel/entry.S.) Il y a
       néanmoins plusieurs exceptions, principalement lorsque d’anciens appels
       système  ont  été  remplacés  par  des  nouveaux. Ces cas n’ont pas été
       traités de manière homogène. Sur les plate-formes avec une émulation de
       système  propriétaire, comme parisc, sparc, sparc64 et alpha, il existe
       de nombreux appels  supplémentaires ;  mips64  contient  aussi  un  jeu
       complet d’appels système 32-bits.

       Avec  le  temps, des changements dans les interfaces de certains appels
       système ont été nécessaires. Une raison  pour  ces  changements  a  été
       l’augmentation  de  la  taille  des structures ou des valeurs scalaires
       passées aux appels  système.  À  cause  de  ces  changements,  il  y  a
       maintenant  plusieurs  implémentations  de certains appels système (par
       exemple truncate(2) et ftruncate64(2)).  Ces  différentes  versions  ne
       sont  pas  compatibles au niveau binaire, mais les applications ne sont
       généralement pas impactées par ceci : la magie  de  la  glibc  fait  en
       sorte  que  les  binaires  existants  utilisent  la  version des appels
       système qui existaient au moment où le binaire a  été  créé.  Ainsi  la
       compatibilité  de  l’ABI  est  préservée.  Voici  des exemples d’appels
       système qui existent dans plusieurs versions :

       *  À ce jour, il y a trois versions  de  stat(2) :  sys_stat()  (entrée
          __NR_oldstat),  sys_newstat()  (entrée  __NR_stat)  et  sys_stat64()
          (entrée  __NR_stat64),  la  dernière  étant  celle  celle   utilisée
          actuellement. La même histoire s’applique à lstat(2) et fstat(2).

       *  De   même,   les   définitions  __NR_oldolduname,  __NR_olduname  et
          __NR_uname concernent les routines  sys_olduname(),  sys_uname()  et
          sys_newuname().

       *  Dans  Linux  2.0,  une  nouvelle  version  de  vm86(2)  est apparue,
          l’ancienne  et  la  nouvelle  routine  du   noyau   étant   appelées
          sys_vm86old() et sys_vm86().

       *  Dans  Linux  2.4,  une nouvelle version de getrlimit(2) est apparue,
          l’ancienne  et  la  nouvelle  routine  du   noyau   étant   appelées
          sys_old_getrlimit()   (entrée   __NR_getrlimit)  et  sys_getrlimit()
          (entrée __NR_ugetrlimit).

       *  Linux 2.4 a augmenté la taille des identifiants d’utilisateur et  de
          groupe  de  16  bits à 32 bits. Pour permettre ce changement, un jeu
          d’appels  système  ont  été  ajoutés   (par   exemple,   chown32(2),
          getuid32(2),   getgroups32(2),   setresuid32(2)),  surchargeant  les
          précédents appels système du même nom sans le suffixe « 32 ».

       *  Linux  2.4  a  ajouté  la  gestion  des  gros  fichiers   pour   les
          applications  sur  architecture 32 bits (c’est-à-dire la gestion des
          fichiers dont la taille et les décalages dans le fichier ne  peuvent
          pas être représentés sur des 32 bits). Pour gérer ce changement, des
          appels système, qui utilisent des déplacements dans des fichiers  ou
          des  tailles  de  fichiers, ont dû être remplacés. Ainsi, les appels
          système  suivants  ont  été  ajoutés :  fcntl64(2),  ftruncate64(2),
          getdents64(2),   stat64(2),   statfs64(2)   et  les  appels  système
          analogues qui fonctionnent avec des descripteurs de fichier  ou  des
          liens  symboliques. Ces appels système remplacent les anciens appels
          système qui, sauf pour les appels « stats », ont le même nom sans le
          suffixe « 64 ».

          Sur  les plates-formes récentes qui n’ont que des accès aux fichiers
          64-bits et des UID 32-bits (ex. alpha, ia64, s390x)  il  n’y  a  pas
          d’appel *64 ou *32. Quand les appels *64 et *32 existent, les autres
          versions sont obsolètes.

       *  Les appels rt_sig* ont été ajoutés dans  le  noyau  2.2  pour  gérer
          l’ajout  des signaux temps-réel (voir signal(7)). Ces appels système
          remplacent les  appels  précédents  du  même  nom  sans  le  préfixe
          « rt_ ».

       *  Les  appels  système  select(2) et mmap(2) utilisent 5 paramètres ou
          plus, ce qui a posé des problèmes avec les  méthodes  classiques  de
          passage  de  paramètres  sur  i386.  Ainsi,  alors  que  les  autres
          architectures disposent de sys_select() et sys_mmap()  correspondant
          à  __NR_select  et __NR_mmap, on trouve sur les i386 old_select() et
          old_mmap() à leur place. Ce sont des routines utilisant un  pointeur
          sur  un  bloc de paramètres. De nos jours, passer 5 paramètres n’est
          plus un problème, et il existe donc un __NR__newselect correspondant
          directement à sys_select() ; il en est de même pour __NR_mmap2.

VOIR AUSSI

       syscall(2), unimplemented(2)

COLOPHON

       Cette  page  fait  partie  de  la  publication 2.80 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

       Cette page de manuel a été traduite  et  mise  à  jour  par  Christophe
       Blaess  <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis par
       Alain Portal <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et  mise  à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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