用于部署到远程Linux主机的命令行的Qt Creator stdin

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)

Phi*_*Bot 5

我发现没有办法为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)