Почему процесс ржавчины вызывает терминальные ошибки при нажатии Ctrl + C? - PullRequest
1 голос
/ 16 июня 2020

Моя программа создала и ждала 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 и полностью завершать процесс по событию?

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