Feature Request: Reposition Execution

Grant Edwards invalid at invalid.invalid
Mon May 11 10:27:54 EDT 2015


On 2015-05-11, Steven D'Aprano <steve+comp.lang.python at pearwood.info> wrote:
> On Mon, 11 May 2015 09:57 pm, Dave Angel wrote:
>
>> On 05/11/2015 07:46 AM, Skybuck Flying wrote:
>>> Hello,
>>>
>>> Sometimes it can be handy to "interrupt/reset/reposition" a running
>>> script.
>>>
>>> For example something externally goes badly wrong.
>>>
>> 
>> os.kill()
>> 
>> then in your process, handle the exception, and do whatever you think is
>> worthwhile.
>
>
> Are you suggesting that the app sends itself a signal?
>
> Is that even allowed?

Of course (at least on Unix/Linux/Posix systems).

And there's even a special case defined to make sending signals to
yourself easy: you just send them to PID 0.

>From "man 2 kill" on Linux:

DESCRIPTION

       The kill() system call can be used to send any signal to any
       process group or process.

       [...]

       If pid equals 0, then sig is sent to every process in the
       process group of the calling process.

And just to make sure I ran a little test, and it works exactly as
advertised:

---------------------------------testit.py--------------------------------
#!/usr/bin/python
import os, sys, time, threading, signal

def thread1():
    while True:
        sys.stdout.write("Hello %s\n" % time.time())
        time.sleep(1)
threading.Thread(target=thread1).start()
time.sleep(2)
os.kill(0,signal.SIGKILL)
---------------------------------------------------------------------------

$ ./testit.py
Hello 1431354383.19
Hello 1431354384.19
Killed
$ 


-- 
Grant Edwards               grant.b.edwards        Yow! Hello.  Just walk
                                  at               along and try NOT to think
                              gmail.com            about your INTESTINES being
                                                   almost FORTY YARDS LONG!!



More information about the Python-list mailing list