Phi*_*Bot 3 c++ qt remote-debugging cross-compiling qt-creator
我正在使用Qt Creator的Remote Deploy功能在嵌入式Linux目标板上启动我的简单命令行应用程序.我的测试应用程序非常简单,并要求用户打印他/她的名字.它交叉编译,传输到电路板,然后启动,Qt Creator底部附近的"应用输出"窗口显示"输入您的名字:"提示,但我无法在任何地方输入并为通过Qt Creator远程运行的应用程序提供标准输入.
我怎样才能在Qt Creator中实现这一目标?我可以以某种方式操纵部署'参数'来连接设备以向我的命令行应用程序提供stdin吗?我也无法通过选中Projects> Run Configuration下的'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;
}
Run Code Online (Sandbox Code Playgroud)
Qt Creator中的应用程序输出:
Killing remote process(es)...
Starting remote process ...
Remote process started.
Enter a number: d
Run Code Online (Sandbox Code Playgroud)
我发现没有办法为IDE中的qt creator启动的应用程序提供stdin.
我确实尝试了一些东西,它看起来像命名管道工作得很好.幸运的是它包含在Busybox中,所以它在我的主板上.
要使用它,您可以使用"运行设置"下的"设备上的备用可执行文件"选项从Qt Creator远程启动应用程序,并将命名管道的最后一行传送到期望stdin的c ++程序.因此,您在设备上的"备用可执行文件"如下所示:
cd /home/test; tail -f mypipe | ./test3 –qws
Run Code Online (Sandbox Code Playgroud)
'test3'是我的程序,/ home/testis是可执行文件的位置.
然后打开1个额外的ubuntu终端并通过SSH连接到主板.现在创建一个名为'mypipe'的命名管道:
mkfifo mypipe
Run Code Online (Sandbox Code Playgroud)
当你的程序期望stdin启动并等待输入时,你可以将来自另一个终端的输入回显到命名管道,你的程序将把它作为stdin:
echo ‘2’ > mypipe
Run Code Online (Sandbox Code Playgroud)