the windows equivalent of fork()?
DataJockey
DataJockey at hotmail.com
Sat Mar 18 16:38:08 EST 2000
I am looking for a way to use the following functionallity in windows.
#test.py
import os
def spawn(prog, *args):
pipe1 = os.pipe()
pipe2 = os.pipe()
pid = os.fork()
if pid:
os.close(pipe1[1])
os.close(pipe2[0])
os.dup2(pipe1[0], 0)
os.dup2(pipe2[1], 1)
else:
os.close(pipe1[0])
os.close(pipe2[1])
os.dup2(pipe2[0], 0)
os.dup2(pipe1[1], 1)
args = (prog,) + args
os.execv(prog, args)
spawn('C:\WINDOWS\Cdplayer.exe')
if is run this i get an 'AttributeError: fork' that i understand,
fork() is a unix specific call. however i do not know how to achieve
the same functionallity with windows.
i reference http://www.python.org/doc/current/lib/os-process.html and i
see
spawnv (mode, path, args)
with constants for mode:
P_WAIT
P_NOWAIT
P_NOWAITO
P_OVERLAY
P_DETACH
however if i try this
os.spawnv(P_WAIT, 'C:\WINDOWS\Cdplayer.exe')
the result is a NameError: P_WAIT
os.spawnv('P_WAIT', 'C:\WINDOWS\Cdplayer.exe')
the result is TypeError: 3-sequence, 2-sequence
i do not know what this means, sorry
system (command)
if i try os.system('os.execl("C:\WINDOWS\Cdplayer.exe")')
a shell spawns and then exits, i get a result of 0 in the
interpretor
in my books i have found that there is a command os.popen() should
automatically do the same as the above code spawn() from test.py. i can
not find popen()'s defenition in the modules. there is a popen2.py, but
the code in this file uses fork(), so i am assuming that the fork() call
is causing the following errors.
if i do os.popen('') to spawn a shell, the result
OSError: (0, 'Error')
if i do os.popen('os.execl("C:\WINDOWS\Cdplayer.exe")')
OSError: (0, 'Error')
and finally if i just do os.execl("C:\WINDOWS\Cdplayer.exe")
python will preform an illegal op and exit, but it will open the cd
player.
i hope someone can help :)
i am new to python and i love it.
i have learned a lot by playing with python, and i can usually figure
out my problems. but this one i can not, please help.
if you read this far, you rock!
thanks in advance
jens page
More information about the Python-list
mailing list