Отправить ввод с клавиатуры на запущенный процесс Linux - PullRequest
6 голосов
/ 10 октября 2010

Я занимаюсь разработкой веб-интерфейса для mp3-плеера (mpg123 linux).Mpg123 - это mp3-плеер из командной строки, которым можно управлять с клавиатуры.Например:

$ mpg123 -C filename.mp3

начнется воспроизведение песни и ввод с клавиатуры клавиатуры для управления.Нажатие «s» приостановит песню «q» для выхода и т. Д.

Я запускаю процесс mpg123 с использованием сценария Perl.Из этого скрипта я хочу отправить входные данные для этого процесса.У меня есть пид процесса, мне просто нужно отправить нажатия клавиш для этого процесса с целью контроля.

1 Ответ

6 голосов
/ 10 октября 2010

Вы просто должны породить свой mp3-плеер как трубу из Perl. Вот так:

$| = 1; # Set unbuffered output.
open( my $mp3player, "| mpg123" ) or die "cannot start mp3 player: $!";
print $mp3player "s";
...
print $mp3player "q";
close $mp3player

Вторая попытка вызова нескольких скриптов: в интерактивной оболочке введите tty. Это даст вам псевдо-терминальное имя. Теперь запустите вашего игрока в этой оболочке. В другой оболочке напишите на этот псевдо-терминал. Например. echo "s" > /dev/pts/11. Игрок получит это в качестве ввода. Если это работает, используйте ваш perl-скрипт вместо echo для записи в псевдотерминал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...