Вот что у меня есть:
Сценарий, который записывает звук и выходит при нажатии ctrl + c
arecord -D plughw:0,0 -f cd -t wav -d 0 -q -r 16000 > file
. Это будет записывать и записывать, пока я не нажму ctrl + c
Я хочу смоделировать действие ctrl + c нажатием любой клавиши (желательно одним нажатием клавиши)
Вы можете использовать stty в подоболочке и изменить настройку для ctrl kbd> - c kbd> на любую другую. В моем примере я изменил его на x kbd>. После того, как подоболочка будет завершена или прервана x kbd>, настройка будет восстановлена в ^ c ( ctrl kbd> - c kbd>).
user@host:~# (stty intr x && arecord -D plughw:0,0 -f cd -t wav -d 0 -q -r 16000 > file); stty intr ^c
Даже если вы завершите процесс с помощью killall acroread
, настройка будет восстановлена.
Предполагая, что вы используете bash в качестве оболочки (вы можете изменить оболочку, если она отличается от bash, в первой строке скрипта):
#!/bin/bash
arecord -D plughw:0,0 -f cd -t wav -d 0 -q -r 16000 > file &
pid_of_arecord=`pidof arecord`
read input
kill -2 $pid_of_arecord
Это отправляет сигнал SIGINT до arecord
, даже когда вы нажимаете любую клавишу после начала записи.