Popen.communicate ()
Last updated
Was this helpful?
Last updated
Was this helpful?
Взаимодействие с процессом: отправка данных на стандартный ввод . Читает данные из и , пока не будет достигнут конец файла. Подождите, пока процесс завершится, и установится атрибут . Необязательный аргумент input должен быть данными для отправки дочернему процессу или None
, если данные не должны отправляться дочернему процессу. Если потоки были открыты в текстовом режиме, input должен быть строкой. В противном случае это должны быть байты.
communicate () возвращает кортеж (stdout_data, stderr_data)
. Данные будут строками, если потоки открывались в текстовом режиме; в противном случае байты.
Обратите внимание: если вы хотите отправлять данные на стандартный ввод процесса , вам необходимо создать объект с помощью stdin = PIPE
. Точно так же, чтобы получить в результирующем кортеже что-либо, кроме None
, вам также необходимо указать stdout = PIPE
и / или stderr = PIPE
.
Если процесс не завершится по истечении timeout секунд ожидания, будет возбуждено исключение TimeoutExpired. Перехват этого исключения и повторная попытка связи не приведет к потере вывода.
Дочерний процесс не уничтожается, если истекает timeout, поэтому для правильной очистки приложение с хорошим поведением должно убить дочерний процесс и завершить обмен данными:
Изменено в версии 3.3: добавлен timeout.