2009-12-22 3 views
3

Je suis allé écrire un script système en utilisant la version 3.0 et j'ai trouvé le signal SIGALRM et l'appel signal.alarm() manquants parmi beaucoup d'autres sur le déploiement de Windows. Est-ce que quelqu'un sait pourquoi ceux-ci manquent? Voici un dir() des paquets de signal 2.5 vs 3.0 sur Windows. Je n'ai pas encore trouvé 3.0 documents mentionnant que cela a été déplacéLa bibliothèque de signaux Python 3.x pour Windows est-elle incomplète?

EDIT: les signaux font fonctionnent dans python25 sur Windows, ils ont été supprimés dans 3.0. Je devrais reformuler ma demande comme «où sont-ils allés ou se sont-ils transformés» ou est-ce que la version de Windows 3.0 n'est pas encore terminée?

python25> python 
Python 2.5.1 (r251:54863, May 18 2007, 16:56:43) 
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import signal 
>>> dir(signal) 
['NSIG', 'SIGABRT', 'SIGALRM', 'SIGBUS', 'SIGCHLD', 'SIGCLD', 
'SIGCONT', 'SIGEMT', 'SIGFPE', 'SIGHUP', 'SIGILL', 'SIGINT ', 'SIGIO', 
'SIGKILL', 'SIGPIPE', 'SIGPOLL', 'SIGPROF', 'SIGQUIT', 'SIGRTMAX', 
'SIGRTMIN', 'SIGSEGV', 'SIGSTOP', 'SIGSYS ', 'SIGTERM', 'SIGTRAP', 
'SIGTSTP', 'SIGTTIN', 'SIGTTOU', 'SIGURG', 'SIGUSR1', 'SIGUSR2', 
'SIGVTALRM', 'SIGWINCH', 'SIGX CPU', 'SIGXFSZ', 'SIG_DFL', 'SIG_IGN', 
'__doc__', '__name__', 'alarm', 'default_int_handler', 'getsignal', 
'pause', 'sig nal'] 

>>> exit() 
python25> cd ../python31 
python31> python 
Python 3.1.1 (r311:74483, Aug 17 2009, 17:02:12) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import signal 
>>> dir(signal) 
['NSIG', 'SIGABRT', 'SIGBREAK', 'SIGFPE', 'SIGILL', 'SIGINT', 
'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_IGN', '__doc__', '__ name__', 
'__package__', 'default_int_handler', 'getsignal', 'set_wakeup_fd', 
'signal'] 
>>> 

Répondre

3

Il semble que vous exécutiez votre 2.5 dans cygwin, ce qui est probablement la raison pour laquelle il apparaît là-bas.

Python 2.5.1 (r251:54863, May 18 2007, 16:56:43) 
[GCC 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)] on cygwin 

Dans mon 2.5 pour win32 il ressemble dans votre 3.1:

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import signal 
>>> dir(signal) 
['NSIG', 'SIGABRT', 'SIGBREAK', 'SIGFPE', 'SIGILL', 'SIGINT', 'SIGSEGV', 'SIGTERM', 'SIG_DFL', 'SIG_IGN', '__doc__', '__ 
name__', 'default_int_handler', 'getsignal', 'signal'] 
+0

Un DOHH sincère! c'était juste en train de me regarder droit dans les yeux. J'utilise Cygwin depuis si longtemps, c'est comme si ça faisait partie des fenêtres pour moi. Pour info, j'ai vérifié la mise en œuvre d'ActiveState pour voir s'ils avaient fait un effort supplémentaire et malheureusement non, ils ne l'ont pas fait. – jottos

3

Windows est PAS OS compatible POSIX il n'a pas tous les signaux - je suppose que sur les signaux manquants 3.0 ne présentent pas plus là.

+0

avec à entrer dans une discussion sur la façon dont Windows juste conforme aux spécifications POSIX est, le fait que python2.5 a les signaux et ils travailleraient peut-être indiquer que la raison pour laquelle ils manquent dans 3.0 est due à d'autres critères de décision, NON? – jottos

+0

Bon point, Heureusement, les réponses truppos pointent vers la bonne réponse. Donc les signaux fonctionnent sous cygwin (mais les jottos '3.0 sont Windows natifs, pas cygwin) – Kimvais

Questions connexes