2015-03-23 3 views
0

Я пытаюсь использовать Python для выполнения нескольких команд с одним процессом, но он не работает. Когда первая команда будет выполнена, она должна продолжаться следующей, но в этом случае она останавливается. Если я набираю exit, тогда выполняется следующая команда.Python - выполнить несколько команд за один процесс

Как я могу заставить команды выполняться друг за другом в одном процессе. Это плохой пример ниже, но вы хотите сделать это легко.

import subprocess 

CMD = "ls -l" 
INIT = "sh" 

if __name__ == '__main__': 
    p = subprocess.Popen(INIT, shell=True, stdout=subprocess.PIPE) 
    p.wait() 
    print(p.returncode) 
    p = subprocess.call(CMD, shell=True)' 

ответ

0

Команда sh не завершена, пока вы не введете «выход» в интерактивной оболочке открыт. Эквивалент Windows - cmd, который также выходит, когда вводится exit. Чтобы запускать несколько команд без ввода пользователя, вы должны запускать команды, которые не требуют ввода пользователя.

Кроме того, вы не должны отправлять вывод в трубу, если не будете читать другой конец. Если труба будет заполнена, подпроцесс будет зависать, ожидая, что он будет опустошен. Используйте/dev/null для игнорирования вывода.

Смежные вопросы