Se connecter
Se connecter
Inscription
Mot de passe perdu
Connexion:
[Actualités]
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
[Actualités]
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
[Actualités]
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
[Actualités]
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tr...
[Actualités]
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélÃ...
[Actualités]
WhatsApp nous permet désormais de réagir à un message en « tirant des confet...
[Actualités]
Les pliables ne décollent pas ? Samsung réduit ses plans de production
[Actualités]
PS5, Sony bannit-il les utilisateurs qui utilisent le navigateur "caché" de la ...
[Actualités]
Test The Thing Remastered (PS5) - Une refonte du classique de 2002
[Actualités]
L'iPhone le plus fin de tous les temps sera aussi le moins cher : ce que l'on sa...
[Articles]
Legacy of Kain Soul Reaver 1&2 Remastered
[Articles]
The Thing Remastered
[Articles]
Mario & Luigi : L'épopée fraternelle
[Articles]
Deel acquiert la plateforme mondiale de gestion de la rémunération Assemble
[Articles]
Xuan Yuan Sword: The Gate of Firmament
[Articles]
Cyber-sécurité : bilan 2024 et regard vers 2025 par Andy Garth, directeur Aff...
[Articles]
Diesel Legacy: The Brazen Age
[Articles]
FANTASIAN Neo Dimension
[Articles]
Fairy Tail 2
[Articles]
Réseaux sociaux inondés d'arnaques deepfake ; Formbook, voleur d'informations ...
Actualités
Lettre d'information
Proposer une actualité
Archives
Actualités
Articles
Programmation
Press Release
Matériel
Logiciels
Livres
Interviews
Derniers commentaires
Jeux Vidéos
XBox One
XBox 360
Wii U
PSP
PS4
PS3
PC
DS
GameCube
3DS
Forum
Derniers messages
Informatique
Fun
Divers
Logithèque
Blogs
Divers
A Propos
Annonceurs
Contact
Recherche
RSS
Editer un article
Titre
Mots Clés
Texte
[size=18] [b]Nom[/b] [/size] sigaction, sigprocmask, sigpending, sigsuspend - Fonctions POSIX de manipulations de signaux. [size=18] [b]Résumé[/b] [/size] [b]#include
[/b] 2 [b][i]int sigaction (int signum , const struct sigaction * act ,[/i][/b] [b][i]struct sigaction * oldact );[/i][/b] [b][i]int sigprocmask (int how , const sigset_t * set ,[/i][/b] [b][i]sigset_t * oldset );[/i][/b] [b][i]int sigpending (sigset_t * set );[/i][/b] [b][i]int sigsuspend (const sigset_t * mask );[/i][/b] [size=18] [b]Description[/b] [/size] L'appel système [b]sigaction[/b] sert à modifier l'action effectuée par un processus à la réception d'un signal spécifique. [i]signum[/i] indique le signal concerné, à l'exception de [b]SIGKILL[/b] et [b]SIGSTOP .[/b] Si [i]act[/i] est non nul, la nouvelle action pour le signal [i]signum[/i] est définie par [b]act .[/b] Si [i]oldact[/i] est non nul, l'ancienne action est sauvegardée dans [b]oldact .[/b] La structure [b]sigaction[/b] est définie par quelque chose comme : [table][row][col] [/col][col] .nf struct sigaction { void (* sa_handler) (int); void (* sa_sigaction) (int, siginfo_t *, void *); sigset_t sa_mask; int sa_flags; void (* sa_restorer) (void); } .fi[/col][/row][/table] Sur certaines architectures on emploie une union, il ne faut donc pas utiliser ou remplir simultanément [i]sa_handler[/i] et [b]sa_sigaction .[/b] L'élément [i]sa_restorer[/i] est obsolète et ne doit pas être utilisé, POSIX ne mentionne pas de membre [b]sa_restorer .[/b] [i]sa_handler[/i] indique l'action affectée au signal [b]signum , [/b] et peut être [b]SIG_DFL[/b] pour l'action par défaut, [b]SIG_IGN[/b] pour ignorer le signal, ou un pointeur sur une fonction de gestion de signaux. [i]sa_mask[/i] fournit un masque de signaux à bloquer pendant l'exécution du gestionnaire. De plus le signal ayant appelé le gestionnaire est bloqué à moins que les attributs [b]SA_NODEFER[/b] ou [b]SA_NOMASK[/b] soient précisés. [i]sa_flags[/i] spécifie un ensemble d'attributs qui modifient le comportement du gestionnaire de signaux. Il est formé par un OU binaire ( | ) entre les options suivantes :[table][row][col] [/col][col] [b]SA_NOCLDSTOP[/b] [table][row][col] [/col][col]Si [i]signum[/i] vaut [b]SIGCHLD , [/b] ne pas recevoir les signaux de notification d'arrêt d'un processus fils (quand le fils reçoit un signal [b]SIGSTOP , SIGTSTP , SIGTTIN[/b] ou [b]SIGTTOU ).[/b][/col][/row][/table] [b]SA_ONESHOT ou SA_RESETHAND[/b] [table][row][col] [/col][col]Rétablir l'action à son comportement par défaut une fois que le gestionnaire a été appelé.[/col][/row][/table] [b]SA_ONSTACK[/b] [table][row][col] [/col][col]Appeler le gestionnaire avec une pile différente fournie par [b]sigaltstack (2).[/b] Si cette pile est indisponible, on utilisera la pile par défaut.[/col][/row][/table] [b]SA_RESTART[/b] [table][row][col] [/col][col]Fournir un comportement compatible avec la sémantique BSD en redémarrant automatiquement les appels systèmes lents interrompus par l'arrivée du signal.[/col][/row][/table] [b]SA_NOMASK ou SA_NODEFER[/b] [table][row][col] [/col][col]Ne pas empêcher un signal d'être reçu depuis l'intérieur de son propre gestionnaire.[/col][/row][/table] [b]SA_SIGINFO[/b] [table][row][col] [/col][col]Le gestionnaire de signal recevra trois arguments, et non plus un seul. Dans ce cas, il faut utiliser le membre [i]sa_sigaction[/i] (apparu dans Linux 2.1.86.) et non pas [b]sa_handler .[/b][/col][/row][/table][/col][/row][/table] Le paramètre [i]siginfo_t[/i] de la routine [i]sa_sigaction[/i] est une structure contenant les éléments suivants : [table][row][col] [/col][col] .nf .ta 4 13 24 siginfo_t { int si_signo; /* Numéro de signal */ int si_errno; /* Numéro d'erreur */ int si_code; /* Code du signal */ pid_t si_pid; /* PID de l'émetteur */ uid_t si_uid; /* UID réel de l'émetteur */ int si_status; /* Valeur de sortie */ clock_t si_utime; /* Temps utilisateur écoulé */ clock_t si_stime; /* Temps système écoulé */ sigval_t si_value; /* Valeur de signal */ int si_int; /* Signal Posix.1b */ void * si_ptr; /* Signal Posix.1b */ void * si_addr; /* Emplacement d'erreur */ int si_band; /* Band event */ int si_fd; /* Descripteur de fichier */ } .fi[/col][/row][/table] Les champs [b]si_signo , si_errno and si_code[/b] sont définis pour tous les signaux. Le reste de la structure peut être une union, et il ne faut donc tenir compte que des champs qui sont significatifs pour le signal reçu. L'appel-système [b]kill (2),[/b] les signaux Posix.1b et SIGCHLD remplissent les champs [b]si_pid et si_uid .[/b] [b][/b] SIGCHLD remplit aussi [b]si_status , si_utime et si_stime .[/b] [b]si_int et si_ptr[/b] sont fournis par l'émetteur d'un signal Posix.1b. SIGILL, SIGFPE, SIGSEGV et SIGBUS remplissent [i]si_addr[/i] avec l'adresse de l'erreur. SIGPOLL remplit [b]si_band et si_fd .[/b] [i]si_code[/i] indique la raison pour laquelle le signal a été émis. Il s'agit d'une valeur, pas d'un masque de bits. Les valeurs possibles pour tous les signaux sont : .TS tab(:) allbox; c s l l. [i]si_code[/i] Valeur:Origine du signal SI_USER:kill, sigsend ou raise SI_KERNEL:Noyau SI_QUEUE:sigqueue SI_TIMER:Fin d'une temporisation SI_MESGQ:Changement d'état mesq SI_ASYNCIO:Fin d'une AIO SI_SIGIO:SIGIO empilé .TE .TS tab(:) allbox; c s l l. SIGILL ILL_ILLOPC:opcode illégal ILL_ILLOPN:opérande illégale ILL_ILLADR:mode 'dadressage illégal ILL_ILLTRP:trappe illégale ILL_PRVOPC:opcode priviliégié ILL_PRVREG:registre privilégié ILL_COPROC:erreur de coprocesseur ILL_BADSTK:erreur interne de pile .TE .TS tab(:) allbox; c s l l. SIGFPE FPE_INTDIV:division entière par zéro FPE_INTOVF:débordement entier FPE_FLTDIV:division réelle par zéro FPE_FLTOVF:débordement réel FPE_FLTUND:débordement inférieur réel FPE_FLTRES:résultat réel inexact FPE_FLTINV:opération réelle invalide FPE_FLTSUB:indice hors intervalle .TE .TS tab(:) allbox; c s l l. SIGSEGV SEGV_MAPERR:adresse sans objet SEGV_ACCERR:permissions invalides .TE .TS tab(:) allbox; c s l l. SIGBUS BUS_ADRALN:alignement d'adresse invalide BUS_ADRERR:adresse physique inexistante BUS_OBJERR:erreur matérielle spécifique .TE .TS tab(:) allbox; c s l l. SIGTRAP TRAP_BRKPT:point d'arrêt du processus TRAP_TRACE:suivi d'exécution du processus .TE .TS tab(:) allbox; c s l l. SIGCHLD CLD_EXITED:fils terminé normalement CLD_KILLED:fils tué par un signal CLD_DUMPED:fils terminé anormalement CLD_TRAPPED:fils en cours de suivi CLD_STOPPED:fils arrêté CLD_CONTINUED:fils arrêté a redémarré .TE .TS tab(:) allbox; c s l l. SIGPOLL POLL_IN:données disponibles en entrée POLL_OUT:buffers de sortie libres POLL_MSG:message disponible en entrée POLL_ERR:erreur d'entrée/sortie POLL_PRI:entrée haute priorité disponible POLL_HUP:périphérique débranché .TE L'appel [b]sigprocmask[/b] est utilisé pour changer la liste des signaux actuellement bloqués. Son comportement est dépendant de la valeur de [b]how ,[/b] avec les conventions suivantes :[table][row][col] [/col][col] [b]SIG_BLOCK[/b] [table][row][col] [/col][col]L'ensemble des signaux bloqués est l'union de l'ensemble actuel et de l'argument [i]set.[/i][/col][/row][/table] [b]SIG_UNBLOCK[/b] [table][row][col] [/col][col]Les signaux dans l'ensemble [i]set[/i] sont supprimés de la liste des signaux bloqués. Il est possible de débloquer un signal non bloqué.[/col][/row][/table] [b]SIG_SETMASK[/b] [table][row][col] [/col][col]L'ensemble des signaux bloqués est égal à l'argument [b]set .[/b][/col][/row][/table][/col][/row][/table] Si [i]oldset[/i] est non nul, la valeur précédente du masque de signaux est stockée dans [b]oldset .[/b] L'appel [b]sigpending[/b] permet l'examen des signaux en attente (qui se sont déclenchés en étant bloqués). Le masque de signaux en attente est stocké dans [b]set .[/b] L'appel [b]sigsuspend[/b] remplace temporairement le masque de signaux bloqués par celui fourni dans [i]mask[/i] puis endort le processus jusqu'à arrivée d'un signal. [size=18] [b]Valeur renvoyée[/b] [/size] [b]sigaction ,[/b] [b]sigprocmask ,[/b] et [b]sigpending[/b] renvoient 0 s'ils réussissent, ou -1 s'ils échouent, auquel cas [i]errno[/i] contient le code d'erreur. La fonction [b]sigsuspend[/b] renvoit toujours -1, avec en principe l'erreur [b]EINTR .[/b] [size=18] [b]Erreurs[/b] [/size] [b]EINVAL[/b] [table][row][col] [/col][col]Un signal invalide est indiqué. Ceci se produit également si l'on tente de modifier l'action associée à [b]SIGKILL ou SIGSTOP . [/b][/col][/row][/table] [b]EFAULT[/b] [b]act , oldact , set , oldset[/b] [table][row][col] [/col][col]ou [i]mask[/i] pointent en-dehors de l'espace d'adressage accessible.[/col][/row][/table] [b]EINTR[/b] [table][row][col] [/col][col]L'appel système a été interrompu. [/col][/row][/table] [size=18] [b]Notes[/b] [/size] Il est impossible de bloquer [b]SIGKILL or SIGSTOP[/b] avec l'appel sigprocmask. Les tentatives seront ignorées silencieusement. Suivant POSIX, le comportement d'un processus est indéfini après qu'il ait ignoré un signal SIGFPE, SIGILL, ou SIGSEGV qui n'avait pas été engendré par une fonction [i]kill()[/i] ou [i]raise()[/i]. La division entière par zéro a un résultat indéfini. Sur certaines architectures, cela déclenchera un signal SIGFPE. (De même diviser l'entier le plus négatif par -1 peut déclencher SIGFPE). Ignorer ce signal peut mener à des boucles sans fin. POSIX (B.3.3.1.3) désapprouve le positionnement de SIGCHLD à SIG_IGN. Les comportements BSD et SYSV diffèrent, faisant échouer sous Linux les logiciels BSD qui positionne l'action de SIGCHLD à SIG_IGN. Les spécifications POSIX définissent seulement [b]SA_NOCLDSTOP .[/b] L'utilisation des autres options de [i]sa_flags[/i] n'est pas portable. L'option [b]SA_RESETHAND[/b] est compatible avec l'option SVr4 du même nom. L'option [b]SA_NODEFER[/b] est compatible avec l'option SVr4 du même nom pour les noyaux 1.3.9 et ultérieurs. Pour les noyaux plus anciens, Linux autorisera la réception de tous les signaux et pas seulement celui qui vient de se déclencher (écrasant effectivement [i]sa_mask[/i] ). Les noms [b]SA_RESETHAND et SA_NODEFER[/b] pour compatibilité avec SVr4 ne sont présents que dans les bibliothèques 3.0.9 et suivantes. L'attribut [b]SA_SIGINFO[/b] est précisé par POSIX.1b. Son support fut ajouté dans Linux 2.2. [b]sigaction[/b] peut être appelé avec un second argument null pour obtenir le gestionnaire de signaux actuel. On peut aussi vérifier si un signal est valide sur la machine actuelle en l'appellant avec les deuxième et troisième arguments nuls. Voir [b]sigsetops (3)[/b] pour les détails concernant les ensembles de signaux. [size=18] [b]Conformité[/b] [/size] POSIX, SVr4. SVr4 ne documente pas la condition d'erreur EINTR. [size=18] [b]Non documentÉ[/b] [/size] Avant l'introduction de l'attribut [b]SA_SIGINFO[/b] il était déjà possible d'obtenir des informations supplémentaires dans le gestionnaire de signal, en lui ajoutant un argument de type [b]struct sigcontext.[/b] On peut retrouver ceci dans les sources du noyau. Ce mécanisme est désormais obsolète. [size=18] [b]Voir aussi[/b] [/size] [b]kill (1),[/b] [b]kill (2),[/b] [b]killpg (2),[/b] [b]pause (2),[/b] [b]sigaltstack (2),[/b] [b]raise (3),[/b] [b]siginterrupt (3),[/b] [b]signal (2),[/b] [b]signal (7),[/b] [b]sigsetops (3),[/b] [b]sigvec (2)[/b] [size=18] [b]Traduction[/b] [/size] Christophe Blaess, 1996-2003.
Fichier
Forum
-
Derniers messages
Bavardages
Aujourd'hui, je rénove ou je construis ^^
Software
problème sur windows 10
Réseaux et Télécom
Administrateur Réseau - Cisco
Réseaux et Télécom
Problème wifi (POE)
Software
Postfix - Need help
Bavardages
Oh râge oh désespoir !
Programmation
Enregistrement client et envoi mail
Software
SÉCURITÉ MACBOOK
Hardware
conseil matos réseau?
Hardware
nVidia Shield Android TV
Actualités
-
Archives
Windows
Windows 11 : le menu Démarrer ne fonctionne parfois plus après la mise à jour
Jeux Vidéos
Test Legacy of Kain Soul Reaver 1&2 Remastered (PS5) - Raziel de retour
Tablettes
2025 nous apportera le nouvel iPad abordable : nouveaux détails de lancement
Google
Découvrons quand le Père Noël arrivera pour livrer nos cadeaux, avec Santa Tracker de Google
Consoles
Nintendo Switch 2, la date d'annonce et le mois de sortie ont-ils été révélés par un leaker ?
Ada
CSS
Cobol
CPP
HTML
Fortran
Java
JavaScript
Pascal
Perl
PHP
Python
SQL
VB
XML
Anon URL
DailyMotion
eBay
Flickr
FLV
Google Video
Google Maps
Metacafe
MP3
SeeqPod
Veoh
Yahoo Video
YouTube
6px
8px
10px
12px
14px
16px
18px
Informaticien.be
- © 2002-2024
Akretio
SPRL - Generated via
Kelare
The Akretio Network:
Akretio
-
Freedelity
-
KelCommerce
-
Votre publicité sur informaticien.be ?