I have two simple python3.11.6 scripts.
One is just printing PID and waiting for signal
Second one is trying to send some signal. For example SIGINT into first script.
First script should just print that signal received but not quit.
Actual status is that first python script does not print anything and just quit.
First Script
import os
import time
import signal
def sighandler(signum,frame):
print('Received signal {},ignoring'.format(signum))
signal.signal(signal.SIGINT,sighandler)
while 1:
time.sleep(1)
print("sig pid:"+str(os.getpid()))
Second Script
import signal
import sys
import os
import time
import psutil
import multiprocessing
pids=[]
def getArgs():
i=1
try:
while sys.argv[i]:
pids.append(int(sys.argv[i]))
i=i+1
except:
pass
def execution(pid):
print("SIGINT")
os.kill(pid,signal.SIGINT)
time.sleep(5)
if psutil.pid_exists(pid):
print("Process still exist killing bz FTASK")
os.system('taskkill /F /T /PID '+str(pid))
return 0
if __name__=='__main__':
getArgs()
print(pids)
time.sleep(5)
print("killing")
pool = multiprocessing.Pool()
outputs = pool.map(execution, pids)
When I press on Keyboard CTRL+C it work. But when it is send from second script is just quit.
I tried catch exception
exception was not triggered
if __name__=='__main__':
print(os.name)
signal.signal(signal.SIGINT,sighandler)
try:
while 1:
time.sleep(1)
print("sig pid:"+str(os.getpid()))
except Exception as e:
print("ahoj")
print(e)
Pavol is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
2