Во время выполнения процесса не существует стандартного способа Unix для перехвата его вывода из другого процесса и начала его захвата после запуска целевого процесса.
Если вы запускаете эти процессы самостоятельно, с помощью execve
, вы можете просто настроить канал с помощью pipe(2)
и перенаправить его дескрипторы (с помощью dup2(2)
) на дочерний процесс 'stdin и stdout. Таким образом, родитель сможет писать / читать в стандартный поток / стандартный вывод ребенка через канал.
Относительно вашего вопроса после редактирования: похоже, он подходит для файла Unix fifo.
Файл fifo (или именованный канал) выглядит как файл, но реализован как канал под капотом.
Итак, просто создайте файл fifo (с помощью команды mkfifo(1)
), запустите серверное приложение, перенаправив его дескрипторы stdin и stdout в этот файл (с помощью операторов оболочки <
и >
), и вы смогу читать с него в любое время.