У меня есть небольшая проблема, которую я не знаю, как решить.
У меня есть программа, которая в основном управляется входами в stdin. Он просто продолжает работать, пока не получит определенную строку, а затем сделает что-то еще. Хорошо, У меня нет доступа к коду, который управляет этими вводами , но я хотел бы добавить новую команду.
У меня есть следующая идея:
. Создать трубу в моей программе
. Форк процесс
. Один из них продолжает исходную программу, а другой читает из стандартного ввода.
. Перенаправить стандартный процесс, который продолжил обычное выполнение, в канал.
. Часть, которая продолжает слушать из stdin, проверяет, что получено, если это не новая команда, просто перенаправьте канал (чтобы старые команды все еще работали)
. Если это новая команда, отправьте определенный сигнал.
Я думал о реализации этого с pipe / fork / dup2 в c ++, но я не знаю, как бы я отправил и поймал сигнал в процессе, который продолжил выполнение. Как я могу сделать это в C ++? Ребята, у вас есть предложения? Это может работать?