S
Sandy
Hi all,
I am a little bit confused about os.fork().
Say I have the following code.
import os
a = ['a','b','c','d','e']
for i in xrange(len(a)):
pid = os.fork()
if not pid:
print a
os._exit(0)
From most of the tuts and examples I saw online, I expect it to print
a,b,c,d,e.
Sometimes (very rare) it prints something like this:
ab
c
d
e
I thought there is no way a parent process can enter the 'if'.
Can anyone explain this behaviour? Is it the case where parent is
forking a child even before the previous child is printing? In that
case is there a way to prevent that? I can use os.wait(), but I don't
want to wait till the child is finished, just don't want to mix the
child processes, that's it.
- dksr
I am a little bit confused about os.fork().
Say I have the following code.
import os
a = ['a','b','c','d','e']
for i in xrange(len(a)):
pid = os.fork()
if not pid:
print a
os._exit(0)
From most of the tuts and examples I saw online, I expect it to print
a,b,c,d,e.
Sometimes (very rare) it prints something like this:
ab
c
d
e
I thought there is no way a parent process can enter the 'if'.
Can anyone explain this behaviour? Is it the case where parent is
forking a child even before the previous child is printing? In that
case is there a way to prevent that? I can use os.wait(), but I don't
want to wait till the child is finished, just don't want to mix the
child processes, that's it.
- dksr