отправка команды на обработку с использованием / proc - PullRequest
5 голосов
/ 02 октября 2010

У меня есть приложение, которое запускается как процесс на сервере Ubuntu.Это приложение имеет графический интерфейс командной строки, который позволяет мне ввести команду, затем нажмите клавишу ВВОД, и команда запустится.Я могу написать сценарий определения идентификатора процесса.Затем я пишу следующее, чтобы отправить ему команду:

# echo "command" > /proc/<PROCESSID>/fd/0

Я пробовал варианты

# echo "command" > /proc/<PROCESSID>/fd/0

# echo -e "command\r" > /proc/<PROCESSID>/fd/0

# echo -e "command\c" > /proc/<PROCESSID>/fd/0
# echo -e "\015" > /proc/<PROCESSID>/fd/0

Я знаю, что программа получает команду, но не выполняет ее.Я подозреваю, что это потому, что я физически не нажимаю Enter и, возможно, командная строка ожидает этого.Может кто-нибудь посоветовать мне, как я использую это неправильно или лучший вариант?

Ответы [ 2 ]

5 голосов
/ 03 октября 2010

Вы не можете этого сделать./ proc / fd / 0 (обычно) не является каналом, в который вы можете писать и давать процессу входные данные.

Что вам нужно сделать, так это вызвать процесс с его stdin, полученным из чего-то, что является каналом(или сокет и т. д.), чтобы вы могли записать в него что-то.

Именованный канал МОЖЕТ работать здесь (смотрите mknod (1) или mkfifo (3)).

В противном случаенужна управляющая программа, которая находится перед ней и использует пару каналов для разговора с ней.

2 голосов
/ 02 октября 2010

Не зная специфики, вам, вероятно, понадобится следующее: ожидайте

...