Я не уверен, что ваш пример будет делать то, что вы хотите. Если запустить, как в вашем вопросе, openssl
откроет /dev/tty
, и он в конечном итоге предложит пользователю несмотря на канал Он не увидит 1234
.
Если вместо этого вы запустите:
openssl genrsa -passout stdin ...
тогда в этом случае он будет читать stdin, но пароль выходного файла ему понадобится только один раз. И чтобы ответить на вопрос, который вы задали, да, это хороший способ, хотя это не системный вызов.
В Unix-подобных системах также довольно редко требуется имитировать ввод программ. Возможно, вы захотите перечитать справочные страницы openssl(1ssl)
и genrsa(1ssl)
; они будут отмечать различные варианты источника пароля.