Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt Creator stdin用于命令行并部署到远程Linux主机_C++_Qt_Qt Creator_Cross Compiling_Remote Debugging - Fatal编程技术网

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

C++ Qt Creator stdin用于命令行并部署到远程Linux主机,c++,qt,qt-creator,cross-compiling,remote-debugging,C++,Qt,Qt Creator,Cross Compiling,Remote Debugging,我正在使用Qt Creator的远程部署功能在嵌入式Linux目标板上启动我的简单命令行应用程序。我的测试应用程序非常简单,要求用户打印他/她的名字。它会交叉编译、传输到电路板并启动,靠近Qt Creator底部的“应用程序输出”窗口会显示“键入您的姓名:”提示,但我无法在任何地方键入并通过Qt Creator为远程运行的应用程序提供标准输入 我如何在Qt Creator内完成这一点?我是否可以通过某种方式操纵deploy“arguments”来连接设备,以向我的命令行应用程序提供stdin?我

我正在使用Qt Creator的远程部署功能在嵌入式Linux目标板上启动我的简单命令行应用程序。我的测试应用程序非常简单,要求用户打印他/她的名字。它会交叉编译、传输到电路板并启动,靠近Qt Creator底部的“应用程序输出”窗口会显示“键入您的姓名:”提示,但我无法在任何地方键入并通过Qt Creator为远程运行的应用程序提供标准输入

我如何在Qt Creator内完成这一点?我是否可以通过某种方式操纵deploy“arguments”来连接设备,以向我的命令行应用程序提供stdin?我也无法通过选中“项目”>“运行配置”下的“终端运行”复选框远程启动应用程序,因为它不可用于远程部署

代码:


我发现没有办法在IDE中为qt creator启动的应用程序提供stdin

我确实尝试了一些东西,它看起来像一个命名的管道工程刚刚好。幸运的是,它包含在Busybox中,所以它在我的板上

要使用它,您可以使用“运行设置”下的“设备上的备用可执行文件”选项从Qt Creator远程启动应用程序 并将命名管道的最后一行管到您的C++程序中,等待STDIN。因此,设备上的“备用可执行文件”如下所示:

cd /home/test; tail -f mypipe | ./test3 –qws
“test3”是我的程序,/home/testis是可执行文件的位置

然后打开1个额外的ubuntu终端,并将SSH连接到主板。现在创建一个名为“mypipe”的命名管道:

mkfifo mypipe
当你的程序需要stdin启动并等待输入时,你可以回显来自stdin的输入 将其他终端插入命名管道,您的程序将把它作为标准输入:

echo ‘2’ > mypipe

调试启动调试子菜单中有更多选项。您需要一个:连接到正在运行的调试服务器。它确实打开了这扇整洁的小窗户:

正如您所看到的,有很多参数,甚至“RuninTerminal”选项,但由于某些原因,它在我的机器上不起作用。不要忘记将本地路径正确设置为可执行二进制文件和工具包设备设置。我还建议您在环境键盘设置中绑定
附件远程服务器
命令的热键

之后,您只需在远程设备上运行
gdbserver

gdbserver :<port> <executable>
gdbserver:
正在运行的进程确实有一个适当的
stdin
stdout
流,您可以通过SSH会话在终端中与应用程序交互

echo ‘2’ > mypipe
gdbserver :<port> <executable>