| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Отследить CTRL-C и CTRL-D |
| Автор: d06osipov 2.9.2007, 21:30 |
| Мне нужно Стандартным способом отследить нажатие CTRL-C, или ввод CTRL-D (конец файла). Я использую cin и cout, но подойдёт и другой, ещё раз подчёркиваю, Стандартный способ. |
| Автор: JackYF 2.9.2007, 22:11 |
| feof(stdin) |
| Автор: Любитель 2.9.2007, 22:22 |
| Конец файла, безусловно - cin.eof() (если юзать iostream). ctrl + c - man sigaction. |
| Автор: JackYF 2.9.2007, 22:32 |
+1. по SIGTERM, если я не ошибаюсь. |
| Автор: archimed7592 3.9.2007, 03:58 |
Стандартного способа нет. |
| Автор: MAKCim 3.9.2007, 08:43 |
SIGINT |
| Автор: JackYF 3.9.2007, 15:23 |
значит, таки ошибся |
| Автор: d06osipov 4.9.2007, 13:48 |
| Когда у меня в программе cin>>str; и я компилирую её на Visual Studio, то нажатие Ctrl-D влечёт набор "^D" в консоли (если компилировать g++, то работает как надо). Либо это идиотизм Microsoft (коих хватает), либо этот способ не оговаривается в Стандарте. Но должен же быть Стандартный способ? Насчёт man sigaction, могу я по крайней мере ожидать, что это будет работать на всех известных компиляторах? Или у 99,9% программ, которые обрабатывают CTRL-C есть #ifdef конструкции для каждого компилятора? |
| Автор: Любитель 8.9.2007, 16:25 |
Везде означает прерывание текущей задачи. В винде, насколько я помню, eof - ctrl+z. |
| Автор: archimed7592 8.9.2007, 16:58 |
Ааа, точно |
| Автор: MAKCim 8.9.2007, 17:00 |
это не зашито жестко через настройки терминала все сочентания клавиш можно изменить + ctrl+D не закрывает программу в Linux, а по-умолчанию посылает ей на вход (если входом является терминал) EOF ('\0') |
| Автор: Mayk 8.9.2007, 18:33 | ||
EOF это -1, а не 0. |
| Автор: MAKCim 8.9.2007, 19:54 |
| Mayk, это зависит от системы если уж быть точным |
| Автор: Любитель 8.9.2007, 20:12 |
| Вообще интересно - как иногда активно обсуждаются достаточно тривиальные темы |
| Автор: Mayk 8.9.2007, 20:12 | ||
Точно, соврал. EOF < 0. Строго меньше 0.
|