У меня есть приложение на С++, которому нужно отправить сигнал End of Transmission.
Я могу сделать Ctrl + D на консоли, но когда я пытаюсь сделать это в Eclipse, это не сработает.
Я использую Eclipse Galileo с CDT.
У меня есть приложение на С++, которому нужно отправить сигнал End of Transmission.
Я могу сделать Ctrl + D на консоли, но когда я пытаюсь сделать это в Eclipse, это не сработает.
Я использую Eclipse Galileo с CDT.
Кажется, что проблема с еще не решена.: ошибка 159803 ( разрешено в сентябре 2015 года для CDT 9.0)
Так как Eclipse 3.1 можно сигнализировать
EOF
(используя CTRL + D/Z - привязываемый по ключевым настройкам) в представлении консоли, и я успешно проверил это с Eclipse 3.2.1, используя простой Приложение Java.
CDT, с другой стороны, не узнаетEOF
при просмотре консоли.
Есть одно исключение, хотя.Если я запустил локальное приложение C/С++ и снимите флажок "
Connect process input & output to a terminal
" на главной вкладке конфигурации, консольное представление распознаетEOF
.Однако это изменение не влияет на представление консоли в перспективе Debug. Поэтому во время отладки все еще невозможно передать сигнал
EOF
запущенному приложению.
Даже если он считается "разрешенным", этот комментарий показывает, что проблема сохраняется.
Обновление 4 года спустя (декабрь 2014 года), Фернандо Гонсалес-Санчес упоминает в комментариях:
Флажок "Обходной путь" больше не доступен в пользовательском интерфейсе.
Проблема все еще происходит в OpenSUSE 12 и Eclipse CDT Luna 4.4.1.
Обновить март 2015:
Мухаммед Аннакиб упоминает в комментариях:
Существует новое обходное решение, упомянутое на странице с ошибкой:
В Kepler 4.3 eclipse.buildId = 4.3.0.M20130911-1000 в Linux проблема все еще существует в консоли Java. Я нашел следующее обходное решение:
"Если вы оставите консоль для фокусировки на другом представлении, а затем перефокусируйтесь на консоли, тогда CTRL - D (EOF) работает так, как ожидалось."
Я нашел решение этой проблемы:
Когда вы закончите ввод своих входов на консоли, нажмите на другое окно (редактор, Project Explorer и т.д.), затем нажмите на консоли. Нажатие Ctrl + Z теперь будет работать.
2015: я использую eclipse luna 4.4.1 для mac и EOF по-прежнему не работает в консоли. Он просто замораживает затмение.
Один из способов, по которому вы можете отправить ctrl + d в консоль, - это сделать небольшую инъекцию BASH в аргументы вашей программы. добавление чего-то типа "& sleep 10 && echo -e '\ x04\c' > /dev/stdin", например, будет ждать 10 секунд перед отправкой команды ctrl-D. хотя вы можете легко изменить его и для некоторых других условий, отличных от времени. Кроме того, вы можете открыть /dev/stdin из вашей программы на С++ в качестве файла, а затем записать в него значение 0x04, затем свернуть, чтобы добиться того же эффекта от вашей программы.