Запустил
import os
import sys
import time
fpid = os.fork()
with open('pid_out', 'w') as f:
f.write(str(os.getpid()))
if fpid != 0:
sys.exit(0)
while True:
time.sleep(10)
7 раз и вывод cat pid_out соответствовал ps aux | grep ‘python scrname.py’.
Можете попробовать
http://pypi.python.org/pypi/python-daemon/А вообще, похоже, запись в файл надо бы перенести после sys.exit. Так как:
import os
import sys
import time
fpid = os.fork()
print os.getpid()
if fpid != 0:
sys.exit(0)
while True:
time.sleep(10)
>>>
[23:55] home:~/dev python scrname.py
17848
17849
В общем, никогда нельзя гарантировать, что родитель начнет выполнять инструкции после форка раньше потомка. Но, чтобы воспроизвести подобную ситуацию, должно очень повезти :) Хотя может ваша проблема не в этом, в воскресенье вечером ни в чем нельзя быть уверенным.