我有一个程序将输出打印到stdout:
#!/usr/bin/env python
import time
import sys
if len(sys.argv) < 1:
valualuee = 1
else:
value = sys.argv[1]
counter = 0
while counter < 100:
print value
time.sleep(0.1)
counter = counter+1
然后我想要在程序中使用不同的参数执行它的2个实例。 在该程序中,我想指定程序的stdout被重定向到哪个文件中。
两个程序完成后,我想在主控台中再次打印一些东西,但是失败了。
除了文件中的输出之外,我还希望能够在控制台上看到一个程序的输出。
这是我的尝试:
#!/usr/bin/env python
import subprocess
import sys
import os
import time
###########################################
def background(program, argument, logfile):
#redirect stdout
sys.stdout = open(logfile, "w")
os.dup2(sys.stdout.fileno(), 1)
try:
pid=os.fork()
except OSError, e:
sys.exit(1)
if pid==0: #in the forked process
ex = "./" + program
os.execvp(ex, [ex, argument])
return pid
###########################################
pid1 = background("program1.py", "1", "log1")
pid2 = background("program1.py", "2", "log2")
os.waitpid(pid1, 0)
os.waitpid(pid2, 0)
#print in console again
print "done"