У меня проблемы с тем, чтобы заставить это работать. В основном у меня есть программа на python, которая ожидает некоторые данные в stdin, которая читает их как sys.stdin.readlines (). Я проверил это, и он работает без проблем с такими вещами, как echo "" | myprogram.py
У меня есть вторая программа, которая с помощью модуля подпроцесса вызывает первую программу со следующим кодом
proc = subprocess.Popen(final_shell_cmd,
stderr=subprocess.PIPE, stdout=subprocess.PIPE,
shell=False), env=shell_env)
f = ' '.join(shell_cmd_args)
#f.append('\4')
return proc.communicate(f)
Вторая программа - это демон, и я обнаружил, что вторая программа работает хорошо, пока я нажимаю ctrl-d после вызова из первой программы.
Так что, похоже, что-то не так с подпроцессом, не закрывающим файл, и моя первая программа ожидала большего ввода, когда больше ничего не должно отправлять.
Кто-нибудь знает, как я могу заставить это работать?
Основная проблема здесь заключается в том, что «shell_cmd_args» может содержать пароли и другую конфиденциальную информацию, которую мы не хотим передавать в качестве имени команды, как это будет отображаться в таких инструментах, как «ps».