2012-09-25 62 views
1

我有用于执行外部进程的这个小实用程序函数。在某些情况下,当我尝试读取进程的输出时,它会挂起。注释输出读线,它的工作原理。如果尝试读取其输出,Python子进程会挂起

def execute(command, cwd): 
    command = command.split(' ') 
    process = Popen(command, 
     stderr=STDOUT, stdout=PIPE, 
     cwd = cwd) 

    # WITHOUT THIS IT WORKS 
    #for line in process.stdout:  
    # log.info('executing %s for user %s: %s' % (command, user.username, line)) 

    # ANOTHER TRY AT READING THE OUTPUT. ALSO MAKES IT HANG 
    #output = p.communicate()[0] 
    #log.info('executing %s for user %s: %s' % (command, user.username, output)) 

    process.wait() 

任何帮助?我需要输出用于调试目的。

+2

你试图执行的命令是什么?此外,为了解析命令,使用'shlex.split(command)'来确保处理引号等。 –

+0

请参阅http://stackoverflow.com/questions/2804543/read-subprocess-stdout-line-by-line – georg

回答