Получил ошибку:
Файл "labpm3.py", строка 37, дочерний
print("I'm child pid:", os.getpid(), "my next bro is:", nextS)
NameError: имя 'nextS' не определено.
Я хотел бы знать, что мне следует сделать, чтобы правильно определить глобальную переменную, заранее благодарю за отзыв
import os, time, sys, signal
children = []
count = 0
def parent(nc, numiter):
nextS = os.getppid()
i = 0
while i < nc:
i+= 1
newpid = os.fork()
if newpid == 0:
child(i)
else:
nextS = newpid
children.append(nextS)
i = 0
while i < numiter:
os.kill(nextS, signal.SIGALRM)
time.sleep(1)
signal.signal(signal.SIGALRM, handler_parent)
i+=1
i = 0
while i < nc:
os.kill(children[i], signal.SIGUSR1)
(pid, sts) = os.waitpid(children[i], 0)
print(pid, os.WEXITSTATUS(sts))
i+=1
def child(number):
global nextS
global count
print("I'm child pid:", os.getpid(), "my next bro is:", nextS)
signal.signal(signal.SIGALRM, handler)
signal.signal(signal.SIGUSR1, handler2)
while True:
time.sleep(10)
def handler(signum, frame):
global nextS
global count
count += 1
print("I'm child pid:", os.getpid(), "sending signal to:", nextS)
os.kill(nextsibl, signal.SIGALRM)
def handler2(signum, frame):
global nextS
global count
sys.exit(count)
def handler_parent(signum, frame):
global count
global nextS
try:
numchild = int(sys.argv[1])
numiter = int(sys.argv[2])
except:
print ('First parameter must be a number', sys.argv[1])
print ('Second parameter must be a number', sys.argv[2])
родитель (numchild, numiter)