在Eclipse CDT控制台中传递传输结束(Ctrl + D)字符

时间:2011-01-17 08:02:32

标签: c++ eclipse-cdt

我有一个C ++应用程序,我需要发送一个End of Transmission信号。

我可以在控制台上执行 Ctrl + D ,但是当我在Eclipse中尝试它时,它不起作用。

我正在使用带有CDT的Eclipse Galileo。

4 个答案:

答案 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写入其中,然后刷新以从程序中获得相同的效果。