我正在使用Qt Creator的Remote Deploy功能在嵌入式Linux目标板上启动我的简单命令行应用程序。我的测试应用程序非常简单,并要求用户打印他/她的名字。它交叉编译,传输到电路板,然后启动,Qt Creator底部附近的“应用输出”窗口显示“输入您的名字:”提示,但我无法在任何地方输入并为通过Qt Creator远程运行的应用程序提供标准输入。
如何在Qt Creator中实现这一目标?我可以以某种方式操纵部署'参数'来连接设备以向我的命令行应用程序提供stdin吗?我也无法通过选中Projects>下的'run in terminal'复选框远程启动应用程序。运行配置,因为它不可用于远程部署。
代码:
#include <iostream>
using namespace std;
int main() {
cout << "Enter a number: ";
int nb;
cin>>nb;
cout << "Here is your number:" << nb << endl;
return 0;
}
Qt Creator中的应用程序输出:
Killing remote process(es)...
Starting remote process ...
Remote process started.
Enter a number: d
答案 0 :(得分:5)
我发现没有办法为IDE中的qt creator启动的应用程序提供stdin。
我确实尝试了一些东西,它看起来像命名管道工作得很好。幸运的是它包含在Busybox中,所以它在我的主板上。
要使用它,您可以使用“运行设置”下的“设备上的备用可执行文件”选项从Qt Creator远程启动应用程序 并将命名管道的最后一行传递给你期待stdin的c ++程序。因此,您在设备上的“备用可执行文件”如下所示:
cd /home/test; tail -f mypipe | ./test3 –qws
'test3'是我的程序,/ home / testis是可执行文件的位置。
然后打开一个额外的ubuntu终端并通过SSH连接到主板。现在创建一个名为'mypipe'的命名管道:
mkfifo mypipe
当你的程序期望stdin启动并等待输入时,你可以回应它的输入 其他终端进入命名管道,你的程序将把它作为stdin:
echo ‘2’ > mypipe
答案 1 :(得分:0)
调试&gt;中有更多选项启动调试子菜单。还有一个你需要的:附加到运行调试服务器。它确实打开了这个整洁的小窗口:
正如您所看到的,有很多参数,甚至是“Run in terminal”选项,但由于某些原因它在我的机器上不起作用。不要忘记正确设置可执行二进制和套件设备设置的本地路径。我还建议您在环境&gt;中为AttachToRemoteServer
命令绑定热键。 键盘设置。
之后,您唯一需要做的就是在远程设备上运行gdbserver
:
gdbserver :<port> <executable>
正在运行的进程有一个正确的stdin
和stdout
个流,您可以通过SSH会话与终端中的应用程序进行交互。