serial_xp a écrit :
Voila, étant a la fac et débutant en python, nous sommes entrain de travailler sur les processus. Cependant, malgré pas mal d'heures passées sur le net, je ne comprends toujours pas comment la librairie "signal" fonctionne.
|
La librairie "signal" implémente les signaux bas niveau UNIX (cf man signal).
La fonction principale est signal.signal, qui prend un identifiant de signal (e.g. SIGBUS, SIGQUIT, SIGKILL, ... là encore cf man signal, les signaux disponibles sous Windows sont plus restreints et indiqués dans la doc du module) et un handler (un callable Python). Lorsque le processus reçoit le signal idoine (depuis un processus tiers, comme le shell, habituellement), le handler est appelé.
Signal contient également quelques fonctions tierces pour des fonctionnalités fréquemment intéressantes, histoire de ne pas avoir à les réimplémenter à la main.
cf http://blog.doughellmann.com/2008/ [...] ignal.html pour plus de doc.
serial_xp a écrit :
En effet, j'ai un processus "mis en attente" grâce a signal.pause() mais je comprends comment l'on récupère le signal du processus afin de le relancer...
|
Via signal.signal, signal.pause() sert juste à "faire hiberner" le processus histoire de limiter sa consommation, avant que le processus ne soit réveillé (et que l'exécution recommence à l'endroit où elle a été mise en pause), le signal handler (enregistré via signal.signal) s'exécute.
Cf man pause.
Note: selon les unix, pause et signal peuvent être des system calls (man 2) ou des appels libc (man 3). Apparemment c'est un syscall sous Linux, et une fonction normale sous BSD (et OSX).
Message édité par masklinn le 27-02-2011 à 16:26:50
---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?