Man page - sem_overview(7)
Packages contains this manual
- shm_overview(7)
- nss(5)
- proc_mtrr(5)
- intro(7)
- tcp(7)
- iso_8859-9(7)
- armscii-8(7)
- proc_kpagecount(5)
- initrd(4)
- mouse(4)
- proc_stat(5)
- x25(7)
- proc_interrupts(5)
- fifo(7)
- repertoiremap(5)
- icmp(7)
- futex(7)
- feature_test_macros(7)
- lp(4)
- bpf-helpers(7)
- epoll(7)
- proc_sys_dev(5)
- namespaces(7)
- proc_sysrq-trigger(5)
- proc_bus(5)
- cp1251(7)
- proc_pid_maps(5)
- proc_sys_vm(5)
- proc_pid_projid_map(5)
- st(4)
- proc_pid(5)
- issue(5)
- pid_namespaces(7)
- unicode(7)
- inode(7)
- hosts.equiv(5)
- iso-8859-13(7)
- proc_fb(5)
- proc_modules(5)
- proc_pid_autogroup(5)
- keyrings(7)
- sysvipc(7)
- proc_kmsg(5)
- cgroups(7)
- latin6(7)
- proc_pid_uid_map(5)
- unix(7)
- proc_pid_io(5)
- pts(4)
- packet(7)
- ld-linux.so(8)
- tzselect(8)
- iconv(1)
- proc_pid_syscall(5)
- proc_pid_net(5)
- proc_pid_pagemap(5)
- tty(4)
- proc_profile(5)
- standards(7)
- proc_pid_mounts(5)
- filesystems(5)
- iso-8859-15(7)
- locale(5)
- iso_8859_3(7)
- xattr(7)
- iso-8859-2(7)
- proc_uptime(5)
- persistent-keyring(7)
- credentials(7)
- proc_pid_timers(5)
- utmpx(5)
- vcsa(4)
- proc_pid_exe(5)
- proc_net(5)
- proc_timer_stats(5)
- ip(7)
- proc_pid_fd(5)
- ptmx(4)
- user_namespaces(7)
- resolv.conf(5)
- url(7)
- iso_8859_5(7)
- iso_8859-8(7)
- urn(7)
- process-keyring(7)
- proc_pid_auxv(5)
- proc_ksyms(5)
- proc_ide(5)
- veth(4)
- ldd(1)
- proc_swaps(5)
- landlock(7)
- proc_vmstat(5)
- system_data_types(7)
- cp1252(7)
- lirc(4)
- proc_kpageflags(5)
- random(7)
- precedence(7)
- cpuset(7)
- proc_pid_ns(5)
- acct(5)
- latin4(7)
- proc_pid_cgroup(5)
- proc_cpuinfo(5)
- iso_8859-2(7)
- proc_keys(5)
- charsets(7)
- pldd(1)
- proc_pid_stat(5)
- rtnetlink(7)
- netlink(7)
- ram(4)
- mem(4)
- iso-8859-6(7)
- proc_key-users(5)
- iso_8859_15(7)
- fanotify(7)
- proc_sys_net(5)
- sysfs(5)
- math_error(7)
- latin1(7)
- proc_pid_root(5)
- nptl(7)
- proc_cgroups(5)
- proc_iomem(5)
- proc_pid_statm(5)
- sem_overview(7)
- hier(7)
- full(4)
- proc_pid_status(5)
- proc_pid_cwd(5)
- proc_pid_cpuset(5)
- proc_scsi(5)
- uri(7)
- proc_diskstats(5)
- iso_8859_6(7)
- latin2(7)
- latin5(7)
- man-pages(7)
- ld.so(8)
- uts_namespaces(7)
- proc_pid_mountstats(5)
- intro(3)
- proc_pid_seccomp(5)
- proc_pid_wchan(5)
- attributes(7)
- symlink(7)
- mount_namespaces(7)
- charmap(5)
- tis-620(7)
- iso-8859-10(7)
- getent(1)
- proc_buddyinfo(5)
- ttytype(5)
- rtc(4)
- proc_malloc(5)
- suffixes(7)
- sln(8)
- signal(7)
- proc_sys_abi(5)
- signal-safety(7)
- time_namespaces(7)
- proc_pid_comm(5)
- raw(7)
- gai.conf(5)
- proc_crypto(5)
- locale(1)
- iso-8859-3(7)
- motd(5)
- proc_meminfo(5)
- iso-8859-8(7)
- protocols(5)
- proc_pid_map_files(5)
- pthreads(7)
- null(4)
- proc(5)
- zdump(8)
- socket(7)
- proc_sys_kernel(5)
- ddp(7)
- memusagestat(1)
- hd(4)
- iso-8859-14(7)
- shells(5)
- pipe(7)
- glob(7)
- proc_self(5)
- network_namespaces(7)
- utmp(5)
- proc_kcore(5)
- nsswitch.conf(5)
- sd(4)
- iso-8859-5(7)
- iso_8859_16(7)
- man(7)
- iso_8859-6(7)
- dir_colors(5)
- mq_overview(7)
- vsock(7)
- ascii(7)
- thread-keyring(7)
- fs(5)
- proc_pid_attr(5)
- proc_sys_debug(5)
- proc_sys(5)
- proc_pid_cmdline(5)
- pty(7)
- services(5)
- cgroup_namespaces(7)
- securetty(5)
- netdevice(7)
- iso_8859_13(7)
- host.conf(5)
- proc_pid_setgroups(5)
- proc_slabinfo(5)
- sock_diag(7)
- iso_8859-14(7)
- iso-8859-11(7)
- iso_8859_11(7)
- operator(7)
- regex(7)
- wavelan(4)
- proc_sys_fs(5)
- nologin(5)
- proc_pci(5)
- koi8-r(7)
- erofs(5)
- intro(2)
- utf8(7)
- proc_kallsyms(5)
- proc_sysvipc(5)
- queue(7)
- proc_sys_sunrpc(5)
- intro(5)
- latin8(7)
- mtrace(1)
- ipc_namespaces(7)
- dsp56k(4)
- iso_8859_4(7)
- proc_pid_smaps(5)
- proc_cmdline(5)
- rpc(5)
- proc_tty(5)
- proc_version(5)
- smartpqi(4)
- proc_pid_timerslack_ns(5)
- aio(7)
- session-keyring(7)
- resolver(5)
- slabinfo(5)
- wtmp(5)
- iso_8859_9(7)
- proc_locks(5)
- mailaddr(7)
- proc_pid_oom_score(5)
- kmem(4)
- iconvconfig(8)
- iso_8859-7(7)
- glibc(7)
- hostname(7)
- proc_thread-self(5)
- ipv6(7)
- iso_8859_7(7)
- proc_kpagecgroup(5)
- core(5)
- time(7)
- units(7)
- proc_dma(5)
- loop(4)
- address_families(7)
- zero(4)
- intro(4)
- procfs(5)
- iso_8859-4(7)
- vdso(7)
- tmpfs(5)
- iso-8859-16(7)
- iso_8859_10(7)
- user-session-keyring(7)
- libc(7)
- proc_fs(5)
- koi8-u(7)
- latin3(7)
- proc_tid_children(5)
- proc_pid_limits(5)
- proc_pid_coredump_filter(5)
- iso_8859-15(7)
- arp(7)
- urandom(4)
- iso_8859-10(7)
- hpsa(4)
- proc_pid_environ(5)
- boot(7)
- ftm(7)
- ld-linux(8)
- proc_driver(5)
- loop-control(4)
- iso_8859-16(7)
- proc_filesystems(5)
- tzfile(5)
- sprof(1)
- proc_pid_task(5)
- proc_pid_oom_score_adj(5)
- proc_mounts(5)
- iso-8859-4(7)
- iso_8859-1(7)
- utf-8(7)
- iso_8859-13(7)
- intro(6)
- proc_timer_list(5)
- rtld-audit(7)
- iso_8859-3(7)
- group(5)
- sched(7)
- proc_pid_clear_refs(5)
- hosts(5)
- iso_8859-11(7)
- numa(7)
- iso_8859_2(7)
- locale(7)
- iso-8859-1(7)
- fuse(4)
- proc_tid(5)
- proc_execdomains(5)
- proc_pid_mountinfo(5)
- intro(8)
- iso_8859_8(7)
- proc_loadavg(5)
- proc_pid_oom_adj(5)
- re_format(7)
- iso_8859_14(7)
- zic(8)
- bootparam(7)
- inotify(7)
- posixoptions(7)
- proc_partitions(5)
- iso-8859-9(7)
- proc_pid_mem(5)
- networks(5)
- proc_sys_user(5)
- udp(7)
- proc_zoneinfo(5)
- latin10(7)
- proc_pid_fdinfo(5)
- proc_pid_stack(5)
- memusage(1)
- spufs(7)
- pkeys(7)
- path_resolution(7)
- proc_ioports(5)
- intro(1)
- ldconfig(8)
- msr(4)
- svipc(7)
- port(4)
- proc_pid_personality(5)
- cciss(4)
- latin9(7)
- capabilities(7)
- localedef(1)
- vcs(4)
- iso_8859-5(7)
- elf(5)
- proc_sys_proc(5)
- console_codes(4)
- random(4)
- iso-8859-7(7)
- termcap(5)
- cpuid(4)
- environ(7)
- string_copying(7)
- proc_pid_gid_map(5)
- queue(3)
- termio(7)
- user-keyring(7)
- complex(7)
- latin7(7)
- proc_config.gz(5)
- udplite(7)
- kernel_lockdown(7)
- proc_devices(5)
- proc_apm(5)
- iso_8859_1(7)
- proc_pid_numa_maps(5)
apt-get install manpages
Available languages:
en fr pl ja ru roManual
sem_overview
NOMDESCRIPTION
Versions
Persistance
Liaison
Accéder aux sémaphores nommés par le systÚme de fichiers
NOTES
EXEMPLES
VOIR AUSSI
TRADUCTION
NOM
sem_overview - Panorama des sémaphores POSIX
DESCRIPTION
Les sémaphores POSIX permettent aux processus et aux threads de se synchroniser.
Un sĂ©maphore est un entier dont la valeur ne peut jamais ĂȘtre nĂ©gative. Deux opĂ©rations peuvent ĂȘtre effectuĂ©es : incrĂ©menter la valeur du sĂ©maphore de 1 ( sem_post (3)), ou dĂ©crĂ©menter la valeur du sĂ©maphore de 1 ( sem_wait (3)). Si la valeur courante est 0, une opĂ©ration sem_wait (3) bloque jusquâĂ ce que la valeur devienne strictement positive.
Les
sémaphores POSIX sont de deux types : les
sémaphores nommés et les sémaphores
anonymes.
Sémaphores nommés
Un sĂ©maphore nommĂ© est identifiĂ© par un nom de la forme /un_nom ; câest-Ă -dire une chaĂźne terminĂ©e par un caractĂšre nul pouvant avoir jusquâĂ NAME_MAX -4 (251) caractĂšres, commençant par une barre oblique (« / ») suivie dâun caractĂšre ou plus, aucun de ces derniers nâĂ©tant une barre oblique. Deux processus peuvent utiliser un mĂȘme sĂ©maphore nommĂ© en passant le mĂȘme nom Ă sem_open (3).
La fonction sem_open (3) crĂ©e un nouveau sĂ©maphore nommĂ© ou en ouvre un existant. AprĂšs lâouverture de ce sĂ©maphore, il peut ĂȘtre utilisĂ© avec sem_post (3) et sem_wait (3). Lorsquâun processus a fini dâutiliser le sĂ©maphore, il peut utiliser sem_close (3) pour le fermer. Lorsque tous les processus ont terminĂ© de lâutiliser, il peut ĂȘtre supprimĂ© du systĂšme avec sem_unlink (3).
Sémaphores anonymes (sémaphores en mémoire)
Un sĂ©maphore anonyme nâa pas de nom. Il est placĂ© dans une rĂ©gion de la mĂ©moire qui est partagĂ©e entre plusieurs threads ( sĂ©maphore partagĂ© par des threads ) ou processus ( sĂ©maphore partagĂ© par des processus ). Un sĂ©maphore partagĂ© par des threads est placĂ© dans une rĂ©gion de la mĂ©moire partagĂ©e entre les threads dâun processus, par exemple une variable globale. Un sĂ©maphore partagĂ© par des processus doit ĂȘtre placĂ© dans une rĂ©gion de mĂ©moire partagĂ©e (par exemple un segment de mĂ©moire partagĂ©e System V créé avec shmget (2), ou un objet de mĂ©moire partagĂ©e POSIX créé avec shm_open (3)).
Avant son utilisation, un sĂ©maphore anonyme doit ĂȘtre initialisĂ© avec sem_init (3). Il peut ensuite ĂȘtre utilisĂ© avec sem_post (3) et sem_wait (3). Lorsque le sĂ©maphore nâest plus nĂ©cessaire, et avant que la mĂ©moire oĂč il est placĂ© ne soit libĂ©rĂ©e, le sĂ©maphore doit ĂȘtre dĂ©truit avec sem_destroy (3).
Le reste de cette section dĂ©crit certains dĂ©tails spĂ©cifiques Ă lâimplĂ©mentation Linux des sĂ©maphores POSIX.
Versions
Avant Linux 2.6, Linux ne proposait que les sĂ©maphores anonymes partagĂ©s par des threads. Sur un systĂšme Linux 2.6 avec une glibc fournissant lâimplĂ©mentation des threads NPTL, une implĂ©mentation complĂšte des sĂ©maphores POSIX est fournie.
Persistance
Les sĂ©maphores POSIX nommĂ©s sont persistants dans le noyau : sâil nâest pas supprimĂ© avec sem_unlink (3) un sĂ©maphore existe tant que le systĂšme nâest pas Ă©teint.
Liaison
Les programmes utilisant lâAPI des sĂ©maphores POSIX doivent ĂȘtre compilĂ©s avec cc -pthread pour ĂȘtre liĂ©s avec la bibliothĂšque temps-rĂ©el, librt .
Accéder aux sémaphores nommés par le systÚme de fichiers
Sous Linux, les sĂ©maphores nommĂ©s sont créés sur un systĂšme de fichiers virtuel, en gĂ©nĂ©ral montĂ© sur /dev/shm , avec des noms de la forme sem. un_nom (ce qui explique que les noms des sĂ©maphores soient limitĂ©s Ă NAME_MAX -4 plutĂŽt quâĂ NAME_MAX caractĂšres).
Depuis Linux 2.6.19, il est possible de placer des listes de contrĂŽle dâaccĂšs sur les fichiers de ce rĂ©pertoire au niveau groupe et utilisateur.
NOTES
Les sémaphores System V ( semget (2), semop (2), etc.) sont une API de sémaphores plus vieille. Les sémaphores POSIX fournissent une interface plus simple et mieux conçue que les sémaphores System V. En revanche, les sémaphores POSIX sont moins largement disponibles que les sémaphores System V (surtout sur les systÚmes plus anciens).
EXEMPLES
Un exemple dâutilisation des diverses fonctions des sĂ©maphores POSIX est donnĂ© dans sem_wait (3).
VOIR AUSSI
sem_close (3), sem_destroy (3), sem_getvalue (3), sem_init (3), sem_open (3), sem_post (3), sem_unlink (3), sem_wait (3), pthreads (7), shm_overview (7)
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org> et David Prévot <david@tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter Ă la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il nây a aucune RESPONSABILITĂ LĂGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .