test1.py:Subprocess.poll()錯誤地返回一個值
process = Popen(["python","test2.py"])
time.sleep(3)
alive = process.poll()
if alive is None:
print "Still running"
else:
print "Not running\r\n"
print "%r" % alive
test1.py輸出:
Not running
2
test2.py:
time.sleep(30)
print "done"
這是怎麼回事?不應該返回「仍在運行」?
由於矛盾的結果,這裏的全test1.py代碼:
import cStringIO
import os
import cgi
import time
from subprocess import Popen
def application(environ, start_response):
headers = []
headers.append(('Content-Type', 'text/plain'))
write = start_response('200 OK', headers)
input = environ['wsgi.input']
output = cStringIO.StringIO()
process = Popen(["python","test2.py"])
time.sleep(3)
alive = process.poll()
if alive is None:
print >> output, "Still running"
else:
print >> output, "Not running\r\n"
print >> output, "%r" % alive
output.write(input.read(int(environ.get('CONTENT_LENGTH', '0'))))
return [output.getvalue()]
更新test1.py:
process = Popen(["python","C:/wamp/www/python/popen/test2.py"], shell=True)
time.sleep(5)
alive = process.poll()
if alive is None:
#print >> output, "%r" % alive
print >> output, "Still running"
else:
print >> output, "Not running"
print >> output, "%r" % alive
print >> output, "Current working dir : %s" % os.getcwd()
print >> output, os.strerror(0)
更新的輸出:
Not running
0
Current working dir : C:\wamp\bin\apache\apache2.2.22
No error
它對我來說工作得很好。我的輸出是「仍在運行」。 – RanRag 2012-08-10 12:23:59
da fuq ...那麼我有一個新問題。有任何想法嗎?我會發布更多的代碼...順便說一句,我認爲這很奇怪,因爲在我的搜索沒有找到「2」作爲poll()的結果。 – Rawr 2012-08-10 12:24:58
與RanRag同樣的結果,我也得到了「仍在運行」。 – 2012-08-10 12:31:49