Как выполнять команды bash из одного процесса bash в другой процесс bash?

Я написал собственное небольшое приложение для реализации того, что мне нужно. Читает аргументы и записывает их в сокет. Жаль, что его еще не было, но в таких инструментах, как ncи socat, доступны только более сложные функции. Возможно, я мог бы найти время, чтобы написать патч для nc, чтобы также принимать входные данные от аргумента.

Комментарии к комментариям -Мне немного грустно читать, что включение полной оболочки и создание из нее подпроцессов является новой нормой. Чистые накладные расходы нам не нужны.

0
11.07.2020, 19:33
1 ответ

Если у вас есть две оболочки, shell-1иshell-2:

(shell-1) $ who am i
user     pts/0       ...

(shell-2) $ who am i
user     pts/1       ...

Затем запись в связанное символьное устройство приведет к тому, что этот вывод будет напечатан на связанном терминале (, как вы видели):

(shell-2) $ echo hello > /dev/pts/0
$

(shell-1) $ hello

Запись в это устройство из shell-2ничем не отличается от записи в него из shell-1. Если вы выполняете echo helloна shell-1, это также записывает в /dev/pts/0и не становится вводом в эту оболочку, оно записывается на «экран» терминала.

Если вы хотите, чтобы процесс записывал стандартный поток ввода оболочки, вам нужно использовать другой механизм (, например, канал или fifo ), и он должен быть установлен процессом, который выполнил оболочку.

1
18.03.2021, 23:20

Теги

Похожие вопросы