Использование subprocess.call()
. Из документов:
subprocess.call (* popenargs, ** kwargs)
Запустите команду с аргументами. Дождитесь завершения команды, затем
вернуть атрибут кода возврата.
Аргументы такие же, как и для
Попен конструктор.
Edit:
subprocess.call()
использует wait()
, а wait()
уязвим для тупиков (как указал Томми Герберт). Из документов:
Предупреждение: это приведет к тупику, если
дочерний процесс генерирует достаточно вывода
к трубе stdout или stderr так, чтобы
блокирует ожидание канала ОС
буфер, чтобы принять больше данных. использование
общаться (), чтобы избежать этого.
Итак, если ваша команда генерирует много выходных данных, используйте communicate()
вместо:
p = subprocess.Popen(
["scanx", "--udp", host],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, err = p.communicate()