Передача символа конца передачи (Ctrl + D) в консоли Eclipse CDT - PullRequest
18 голосов
/ 17 января 2011

У меня есть приложение на C ++, в которое мне нужно отправить сигнал об окончании передачи.

Я могу сделать Ctrl + D на консоли, но когда я пытаюсь это сделать в Eclipse, это не работает.

Я использую Eclipse Galileo с CDT.

Ответы [ 4 ]

21 голосов
/ 17 января 2011

Кажется, это еще не решенная ошибка : ошибка 159803 (устранена в сентябре 2015 года, для CDT 9.0)

Начиная с Eclipse 3.1 можно сигнализировать EOF (используя CTRL + D / Z - привязывается в предпочтениях клавиш) в представлении консоли, и Я успешно протестировал это в Eclipse 3.2.1 с помощью простого приложения Java.
CDT, с другой стороны, не распознает EOF в режиме консоли.
Хотя есть одно исключение .

Если я запускаю локальное приложение C / 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) будет работать, как и ожидалось."

6 голосов
/ 08 февраля 2015

Я только что нашел решение этой проблемы:

Когда вы закончите вводить свои данные на консоли, нажмите на другое окно (редактор, Project Explorer и т. Д.), Затем снова нажмите на консоль. Нажатие Ctrl + Z теперь будет работать.

2 голосов
/ 25 января 2015

2015 обновление: я использую eclipse luna 4.4.1 для Mac, и EOF все еще не работает в консоли. Просто замерзает затмение.

0 голосов
/ 17 января 2011

Один из способов, которым вы могли бы подумать об отправке ctrl + d на консоль, - это сделать небольшую вставку BASH в аргументы вашей программы. Например, добавление чего-то вроде «& sleep 10 && echo -e '\ x04 \ c'> / dev / stdin» будет ждать 10 секунд перед отправкой команды ctrl-D. хотя вы могли бы легко изменить его и для других условий, не связанных со временем. Кроме того, вы можете открыть / dev / stdin из вашей программы на C ++ в виде файла, затем записать в него значение 0x04 и выполнить сброс для достижения того же эффекта от вашей программы.

...