У меня есть программа, которую я запускаю с помощью nohup program &
. Эта программа принимает входные данные от STDIN
. Есть ли способ отправить текст в STDIN
программы, которая запущена через nohup
?
Это на FreeBSD с bash. Хотелось бы посмотреть, как это делается на Linux.
решение1
nohup
запускает программу со стандартным вводом, перенаправленным с /dev/null
(предполагая, что вы не перенаправили nohup
саму команду). Так что нет, вы не можете отправить ввод в эту программу.
Если вы хотите отправить ввод в программу, перенаправьте ввод при ее запуске:
nohup program <input-file.txt & # input from a file
nohup data-producer | nohup program & # input from another program
mkfifo program.pipe; nohup program <program.pipe & # input from a named pipe, feed it what you want later
(На самом деле, можно переподключить стандартный ввод программы к другому источнику, используя ptrace
, например, отладчик или другой хак. Это может привести к сбою программы, если она отслеживает, откуда поступает ввод. См.Как можно приостановить запущенный процесс по SSH, отозвать его, связать с новой оболочкой экрана и возобновить его работу?; на эту тему есть и другие вопросы в сети SE.)