Inter process signalling
Duncan Booth
duncan.booth at invalid.invalid
Wed Sep 13 05:08:25 EDT 2006
Dale Strickland-Clark <dale at riverhall.nospam.co.uk> wrote:
> In Linux this is easy with 'signal' and 'kill' but how can I get one
> Python process to signal another (possibly running as a service)?
>
> All I need is a simple prod with no other data being sent and none
> being returned - except that the signal was delivered.
>
> Receiving a signal should generate an interrupt. I'm not looking for a
> solution the involves polling.
>
Lots of ways. Basically all involving creating a thread which waits on an
event and then calls your code when the event is generated.
You can use semaphores, named pipes &c.; you could create a windows message
queue and simply send the process a message when you want to alert it; you
could create a COM server and call a method on it; you could use
asynchronous procedure calls (APCs) (but you still need to ensure that
there is a thread in an alertable wait state).
If the code you want to signal is running as a service then the easiest way
to signal it is to call win32service.ControlService with a user defined
service code. That gives you 127 signals to play with, and Python's win32
library will simply call the SvcOther method within your service code
(although not of course using the same thread as the actual service is
running on).
More information about the Python-list
mailing list