Передать/отправить команду процессу, запущенному на nohup, который принимает входные данные из STDIN

Передать/отправить команду процессу, запущенному на nohup, который принимает входные данные из STDIN

У меня есть программа, которую я запускаю с помощью 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.)

Связанный контент