Qt 通过ssh和远程触摸屏启动远程程序

Qt 通过ssh和远程触摸屏启动远程程序,qt,ssh,embedded-linux,Qt,Ssh,Embedded Linux,目前,我正在开发一个在嵌入式终端上运行的程序,该终端带有嵌入QWS的触摸屏qt。为了便于测试,我编写了一个调用make的小脚本,通过scp将文件传输到设备,最后通过 sshroot@hmi/mnt/test-qws& 到目前为止,一切都很顺利。唯一的问题是,应用程序不再接受来自触摸屏的输入。我最好的猜测是,ssh使用开发机器上的stdin。我再次尝试在本地重定向stdin,但没有成功 澄清事项:程序已成功启动,并显示在触摸屏上。唯一的问题是,它不接受任何触摸输入,这是我唯一的输入设备 如果我通过

目前,我正在开发一个在嵌入式终端上运行的程序,该终端带有嵌入QWS的触摸屏qt。为了便于测试,我编写了一个调用make的小脚本,通过scp将文件传输到设备,最后通过

sshroot@hmi/mnt/test-qws&

到目前为止,一切都很顺利。唯一的问题是,应用程序不再接受来自触摸屏的输入。我最好的猜测是,ssh使用开发机器上的stdin。我再次尝试在本地重定向stdin,但没有成功

澄清事项:程序已成功启动,并显示在触摸屏上。唯一的问题是,它不接受任何触摸输入,这是我唯一的输入设备

如果我通过ssh登录并启动该程序,它可以正常工作:

sshroot@hmi /mnt/测试-qws


有人能帮忙吗?

从您上次的编辑中,我认为您的程序是运行您的应用程序,然后退出。这是因为ssh执行命令,但不使其保持活动状态。 为了确定这个想法,我需要你的确认

1您应该做一个简单的测试:打开两个终端,一个是您登录并不断使用ps-aux | grep myapp之类的工具检查流程,另一个是运行ssh脚本

如果程序立即运行并退出,则必须避免在命令执行后关闭二进制文件。为此,我将创建一个小型shell脚本,如下所示:

#!/bin/sh 
nohup /home/somewhere/bin/myapp.EXE & #<--just for fun :) it's a linux binary file
#placed in /home/somewhere/bin/
#notice: nohup to avoid SIGHUP and final "&" to run it in background 
#and called (i.e.) script.sh
最后再次检查1,即使ssh会话关闭,它仍然处于活动状态

编辑:如果我理解你所做的,就简单解释一下错在哪里

使用ssh命令:

ssh login@domain "command" &
您希望在后台运行该命令,但它没有,这是因为ssh运行该命令,然后退出,如果您理解我的意思,那么最终&将被丢弃


因此,为了达到您的目的,您应该写下一个运行您的命令的脚本,并将其保持为alivenohup+final&,然后从ssh运行它。

Hi,您的应用程序是否与无触摸屏遥控器一起工作?您是否可以使用另一个终端登录,并使用ps-aux检查ssh命令是否成功,以及命令执行后是否没有挂起。如果是stdin重定向,-nsh的标志可能会有所帮助。请看这里:您正在使用tslib吗?然后可能是ssh会话中没有环境变量。看见只需在开始测试之前添加它们,即制作一个脚本,设置变量,然后开始测试。@Alberto,-n标志不起作用help@yegorich是的,我使用tslib。不幸的是,这不是环境变量的问题。非常感谢您的详细回答。不幸的是,这并不能解决我的问题。该应用程序正在运行,在我明确杀死它之前不会退出。
ssh login@domain "command" &