Моя программа создала и ждала process::Command
. В этом процессе команда bash запускает команду, которая также будет ждать сигнала выхода, чтобы остановить процесс. Например,
let shell = "bash";
Command::new(shell)
.arg("-c")
.arg("watch command") // watch command won't stop until it gets a Ctrl+C
.spawn()
.unwrap();
.wait()
.unwrap();
Во время выполнения процесса, если я набираю Ctrl+C
, я получаю два вопроса о том, следует ли завершить процесс или нет (ДА / НЕТ) соответственно. Если я наберу Ctrl+C
еще несколько раз, процесс завершится. Но когда я отвечу на вопрос «Да» или «Нет», терминал сломается. Я не могу вводить команды, клавиши Enter не работают, даже не могу выйти из терминала. Новые команды, которые я набираю, заменят текущий текст на терминале, и я даже могу удалить тексты терминала, как текстовый редактор.
Я не знаю, что вызвало ошибку. Я делаю что-то неправильно? Как добавить прослушиватель событий, который будет прослушивать команду Ctrl+C
и полностью завершать процесс по событию?