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

时间:2015-01-28 09:08:22

标签: qt ssh embedded-linux

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

启动程序

ssh root@hmi "/mnt/test -qws" &

到目前为止,一切都很顺利。唯一的麻烦是,应用程序不再接受来自触摸屏的输入。我最好的猜测是,ssh使用开发机器中的stdin。我在当地重新定位stdin,但没有成功。

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

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

ssh root@hmi /mnt/test -qws

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

从上次编辑开始,我认为你的程序是你的应用程序运行然后退出。这是因为ssh执行命令,但不保持“活着”。 为了确定这个想法,我需要你的确认。

(1)你应该做一个简单的测试:打开你登录的2个终端,并用“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

然后使用如下语法从ssh运行它:

ssh root@pc /home/somewhere/bin/script.sh 

最后再次检查(1)现在即使在ssh会话关闭后它仍然存在。

编辑:只是对错误的解释(如果我理解你做了什么)的简短解释

使用ssh命令:

ssh login@domain "command" &

你想在后台运行“命令”,但它没有,这是因为ssh运行命令然后退出,最后&amp;被“丢弃”(如果你明白我的意思)。

因此,为了实现你的目的,你应该写下一个运行你的“命令”并保持活着的脚本(nohup + final&amp;),然后从ssh运行它。