#!/usr/bin/python
import os
import signal
import sys
import time
lock_filename = 'master.lock'
def master_loop():
for i in range(0, 3):
pid = os.fork()
with open(str(os.getpid()), "a") as f:
f.write(str(pid)+"\n")
while True:
time.sleep(0.1)
def fork_loop():
with open('f_'+str(os.getpid()), "w") as f:
f.write("fork")
while True:
pass
def remove_lock(sgn, frame):
os.remove(lock_filename)
sys.exit(0)
if __name__ == "__main__":
with open("s_"+str(os.getpid()), "w") as out_f:
out_f.write(str(os.getpid()))
master = False
if not os.path.exists(lock_filename):
master = True
with open(lock_filename, "w") as out_f:
out_f.write(str(os.getpid()))
signal.signal(signal.SIGTERM, remove_lock)
signal.signal(signal.SIGINT, remove_lock)
if master:
master_loop()
else:
fork_loop()
Все привет. Делаю следующую штукенцию, при запуске проги - один процесс, который мы запустили должен стать мастер процессом и делать всякие штуки, а также породить несколько форк-процессов, которые должны стать не мастерами и делать совсем другие штуки. А этот код делает ну совсем не то, тут много отладочного вывода в разные файлики, но они меня еще сильнее удивляют, там такая чепуха выводится. Почему этот код работает не правильно? Почему форки-бунтари мнят себя мастерами?