我有一个C ++应用程序,我需要发送一个End of Transmission信号。
我可以在控制台上执行 Ctrl + D ,但是当我在Eclipse中尝试它时,它不起作用。
我正在使用带有CDT的Eclipse Galileo。
答案 0 :(得分:21)
它似乎是尚未解决的错误:bug 159803(已于2015年9月解决,CDT 9.0)
从Eclipse 3.1开始,可以发出信号
EOF
(使用 CTRL + D / Z - 在键首选项中可绑定)在控制台视图中,我使用简单的Java应用程序使用Eclipse 3.2.1成功测试了这一点 另一方面,CDT在控制台视图中无法识别EOF
但有一个例外。如果我在主配置选项卡中运行C / C ++本地应用程序并取消选中“
Connect process input & output to a terminal
”,则控制台视图将识别{{1} }。但是,在Debug透视图中,此更改不会影响控制台视图。因此,在调试时,我仍然无法向正在运行的应用程序发送
EOF
信号。
即使被视为“已解决”,this comment也会显示问题仍然存在。
4年后(2014年12月)更新,Fernando Gonzalez-Sanchez提及in the comments:
用户界面中不再提供解决方法复选框 问题仍然发生在OpenSUSE 12& Eclipse CDT Luna 4.4.1。
2015年3月更新:
Muhammad Annaqeeb提及in the comments:
有一个new workaround mentioned in the bug page:
在Linux上的Kepler 4.3 eclipse.buildId = 4.3.0.M20130911-1000中,Java控制台中仍然存在问题。我找到了以下解决方法:
“如果你让控制台专注于另一个视图,然后重新聚焦在控制台上,那么 Ctrl - D (EOF)按预期工作。”
答案 1 :(得分:6)
我刚刚找到了解决这个问题的方法:
在控制台上输入输入后,单击另一个窗口(编辑器,Project Explorer等),然后单击控制台上的。点击 Ctrl + Z 现在可以正常工作。
答案 2 :(得分:2)
2015年更新:我使用eclipse luna 4.4.1 for mac和EOF仍然无法在控制台中运行。它只是冻结了日食。
答案 3 :(得分:0)
您可以考虑将ctrl + d发送到控制台的一种方法是在程序参数中进行一点BASH注入。例如,附加“& sleep 10&& echo -e'\ x04 \ c'> / dev / stdin”之类的内容将在发送ctrl-D命令之前等待10秒。虽然您可以轻松地修改它以适应其他非基于时间的条件。此外,您可以将C ++程序中的/ dev / stdin作为文件打开,然后将值0x04写入其中,然后刷新以从程序中获得相同的效果。