M
Michael Goerz
Hi,
I'm using subprocess.Popen() to run some background processes. However,
the program is also supposed to catch CTRL+C keyboard interrupts for
refreshs (i.e. a keyboard interrupt doesn't shut down the program).
But as it seems, a keyboard interrupt will automatically pass down to
the subprocesses, causing them to abort. Is there a way that I can
prevent the subprocesses from being canceled by a keyboard interrupt?
To clarify my question, here is a minimal example:
import subprocess
import os
import time
import sys
# is 'sleep' available on Win machines?
# use another dummy program if it isn't
p = subprocess.Popen(['sleep', '10'])
while True:
try:
time.sleep(1)
pass # normal program procedure
print "subprocess poll: " + str(p.poll())
except KeyboardInterrupt:
try:
print("Hit Ctrl+C again to quit")
time.sleep(1)
print "Refreshing"
pass # do some refresh stuff here
except KeyboardInterrupt:
sys.exit(0)
As you can see, after the refresh, p.poll() is '-2'. I'd want the
subprocess to continue undisturbed, i.e. p.poll() would still return 'None'.
Thanks,
Michael
I'm using subprocess.Popen() to run some background processes. However,
the program is also supposed to catch CTRL+C keyboard interrupts for
refreshs (i.e. a keyboard interrupt doesn't shut down the program).
But as it seems, a keyboard interrupt will automatically pass down to
the subprocesses, causing them to abort. Is there a way that I can
prevent the subprocesses from being canceled by a keyboard interrupt?
To clarify my question, here is a minimal example:
import subprocess
import os
import time
import sys
# is 'sleep' available on Win machines?
# use another dummy program if it isn't
p = subprocess.Popen(['sleep', '10'])
while True:
try:
time.sleep(1)
pass # normal program procedure
print "subprocess poll: " + str(p.poll())
except KeyboardInterrupt:
try:
print("Hit Ctrl+C again to quit")
time.sleep(1)
print "Refreshing"
pass # do some refresh stuff here
except KeyboardInterrupt:
sys.exit(0)
As you can see, after the refresh, p.poll() is '-2'. I'd want the
subprocess to continue undisturbed, i.e. p.poll() would still return 'None'.
Thanks,
Michael