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
---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody