파이썬을 통해 gnuplot을 실행하려고합니다.파이썬 하위 프로세스 stdout이 읽지 않습니다
명령을 보내고 실행할 수는 있지만 응용 프로그램에서 경고 또는 오류 메시지를 읽을 수는 없습니다. 그냥 여기에서 기다립니다 : "self.proc.stdout.readline()". 그냥 여기에서 대기
from subprocess import PIPE, Popen
import fcntl, os
class Gnuplot:
def __init__(self, debug=True):
self.debug = debug
if self.debug:
print 'Initializing ...\n'
self.proc = Popen(['gnuplot','-persist'],stdin=PIPE, stdout=PIPE, stderr=PIPE)
fcntl.fcntl(self.proc.stderr.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)
def communicate(self, cin='\n'):
self.proc.stdin.write(cin+'\n')
cout, cerr = '', ''
print "lol"
if self.proc.stdout:
cout = self.proc.stdout.readline()
self.proc.stdout.close()
print cout
elif self.proc.stderr:
cerr = self.proc.stderr.read()
self.proc.stderr.close()
print cerr
if __name__ == '__main__':
g = Gnuplot()
g.communicate("set parameter\n")
g.communicate("plot sin(x)\n")
: 여기
내 전체 코드 오히려 표준 출력과 표준 오류 스트림에cout = self.proc.stdout.readline()