def StartProc(dir, parm):
global proc
proc_log = open(dir + os.sep + "MyLog.txt","w") #new path for each file
if parm:
proc = subprocess.Popen(path, 0, None, subprocess.PIPE, proc_log, None)
else:
MyReset(proc) #reset the process(proc) to its default values
proc.stdout = proc_log #no effect
print "fptr ", proc.stdout
#endif
#enddef
prm = True
for i in range(0, 5):
StartProc(i, prm)
prm = False
#endfor
What I want to do is to start an executable only once, but on each iteration I want to redirect the process output to a different file. What is happening, is that files are created in the different path, but output is redirected to the file that is created first time.
Note: MyReset() initializes the process (executable) to its default values after the first iteration.
Will the following line change the process stdout to new file?
proc.stdout = proc_log
Like unwind said, you cannot change the file descriptor that the child process is writing its output to.
What you can do, is read the output from the child process in your python script and then write it back to whatever file you want to. E.g.:
Obivously, you’ll need to figure out how control should behave in your app, i.e. can you do the writing from the main thread, when should the main thread return from
StartProc()in that case, or do you have to do the writing from another thread so that the main thread can return fromStartProc()immediately.