KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using python to manage some simulations. I build the parameters and run the program using: pipe = open('/dev/null', 'w') pid = subprocess.Popen(shlex.split(command), stdout=pipe, stderr=pipe) My code handles different signal. Ctrl+C will stop the simulation, ask if I want to save, and exit gracefully. I have other signal handlers (to force data output for example). What I want is to send a signal (SIGINT, Ctrl+C) to my python script which will ask the user which signal he wants to send to the program. The only thing preventing the code to work is that it seems that whatever I do, Ctrl+C will be "forwarded" to the subprocess: the code will catch it to and exit: try: <wait for available slots> except KeyboardInterrupt: print "KeyboardInterrupt catched! All simulations are paused. Please choose the signal to send:" print " 0: SIGCONT (Continue simulation)" print " 1: SIGINT (Exit and save)" [...] answer = raw_input() pid.send_signal(signal.SIGCONT) if (answer == "0"): print " --> Continuing simulation..." elif (answer == "1"): print " --> Exit and save." pid.send_signal(signal.SIGINT) [...] So whatever I do, the program is receiving the SIGINT that I only want my python script to see. How can I do that??? I also tried: signal.signal(signal.SIGINT, signal.SIG_IGN) pid = subprocess.Popen(shlex.split(command), stdout=pipe, stderr=pipe) signal.signal(signal.SIGINT, signal.SIG_DFL) to run the program but this gives the same result: the program catches the SIGINT. Thanx!
Tags (comma-separated)
Save Edits
Cancel