I have this simple python script called myMain.py
to execute another python program automatically with incremental number, and I'm running it on CentOS 7:
#!/usr/bin/python
import os
import sys
import time
def main():
step_indicator = ""
arrow = ">"
step = 2
try:
for i in range(0,360, step):
step_percentage = float(i)/360.0 * 100
if i % 10 == 0:
step_indicator += "="
os.system("python myParsePDB.py -i BP1.pdb -c 1 -s %s" % step)
print("step_percentage%s%s%.2f" % (step_indicator,arrow,step_percentage)+"%")
except KeyboardInterrupt:
print("Stop me!")
sys.exit(0)
if __name__ == "__main__":
main()
For now I only know this script is single thread safe, but I can't terminate it with Ctrl+C
keyboard interruption.
I have read some relative questions: such as Cannot kill Python script with Ctrl-C and Stopping python using ctrl+c I realized that Ctrl+Z
does not kill the process, it only pauses the process and keep the process in background. Ctrl+Break
does work for my case either, I think it only terminates my main thread but keeps the child process.
I also noticed that calling os.system()
will spawn a child process from the current executing process. At the same time, I also have os
file I/O functions and os.system("rm -rf legacy/*")
will be invoked in myParsePDB.py
which means this myParsePDB.py
child process will spawn child process as well. Then, if I want to catch Ctrl+C
in myMain.py
, should I daemon only myMain.py
or should I daemon each process when they spawn?