3

У меня есть программа, которую я запускаю, используя nohup program & . Эта программа принимает ввод от STDIN . Есть ли способ отправить текст на STDIN программы, запущенной через nohup?

Это на FreeBSD работает bash. Я хотел бы посмотреть, как это делается на Linux.

1 ответ1

6

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 на эту тему.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .