如何进行远程启动

我的导师让我用QNX的图形用户界面设计一个软件,用来远程启动其它的QNX程序,并能看到它们的运行情况, 这样,就可以在一台计算机上形象直观的观察其它计算机上程序的运行状态。 请问如何才能实现远程启动,又如何才能观察其它程序的运行状态呢?

希望各位师长多多指点迷津,我在此感激万分,乞盼佳音!

你是QNX4还是QNX6?

你可以在其他每个QNX上安装一个你自己编写的服务程序,这个服务程序能够通过网络接收命令来执行一些操作,比如启动一个程序,结束一个程序,收集系统信息等
然后你再在你的计算机上编写一个图形界面的软件来和这些服务程序通讯,这样不就完成任务了。

我用的是QNX6

lonki先生:
你说让我编写服务程序,可以通过网络接收命令,与其它计算机进行通信,那么我想问,如何实现计算机之间的通信,我需要看哪些方面的书籍呢?你能不能给我提供一些比较简单的有关这方面的程序的源代码,让我能有一个感性的认识,可以吗?

不好意思,我是一个新手,以前几乎没有接触过程序设计方面的问题,所以现在是一头雾水,分不清东南西北了,还望多多指点迷津,多多帮助。我将不胜感激。谢谢。
恭候佳音。

有两种方法。

用 TCP/IP的方法,基本上就是写一个TCP的服务器程序,客户端向服务器发一个要求,服务器代客户端执行所要执行的程序并将结果返回。随便并于讲tcpip编程入门的书都可以。比较出名的是: UNIX Network Programming (W. Richard Stevens)。这个方法的好处是,客户端与服务器端不一定需要是qnx,任何支持tcpip的系统都可以。缺点是,有一些涉及到进程管理的用法没有办法完成。

另外一个是QNX的方法。首先你必须启动QNET。在QNET上,QNX允许直接spawn() 一个进程到另外一台机器上。spawn()的说明在这里。它的inherit结构里有一个标志位是SPAWN_SETND,设定这个标志位和“nd",可以将进程spawn()到另一台机器上。

非常感谢,xtang先生,不过我还想问一下,什么是QNET,如何启动它?

关于QNET的说明在这里

启动QNET只要"touch /etc/system/config/useqnet",以后每次启动都会自动启动QNET。

xtang先生:
你好。
对远程启动这个问题,我现在又有些困惑了,请给予指点。

比如我现在有两台qnx计算机,一台为node_1节点,另一台为node_2节点。在node_2这台计算机上有一程序myprocess.c,我想在node_1这台计算机上启动myprocess.c这个程序,让myprocess这个程序在node_2这台计算机上运行。我用的是spawnl这个函数。具体如下:
start_pid = spawnl(P_NOWAIT,"/net/node_2/home/dcpu/workspace/myprocess/x86/o/myprocess", “myprocess”, NULL);
通过这个函数,我可以启动myprocess.c这个程序,可是这个程序执行时,它是在node_1这台计算机上运行还是在node_2节点运行呢?也就是说这个myprocess.c运行时,是占用node_1的CPU资源还是node_2的CPU资源呢?这是一个问题。

问题二:你给我说用spawn函数,可以直接spawn一个进程到另外一台机器上,但是需要设定它的inherit结构里的标志位SPAWN_SETND和“nd",这样可以将进程spawn()到另一台机器上。[/quote]
请问,我如何设定标志位SPAWN_SETND和“nd"呢?这样node_2节点上的程序myprocess.c是在node_1机子上运行还是在node_2机子上运行呢?

问题三:我一直不清楚spawnl与spawn这两个函数的区别,能详细给我讲解一下吗?
这三个问题一直困惑着我,希望你能够指点迷津。不胜感激。

借用一下这个问题,请问在QNET下怎么传递文件?是说局域网上的两台QNX主机如何通过QNET共享文件?TCP/IP方式用FTP服务器的方法不用说肯定可以传递文件,第三方samba也能实现共享文件.可是我在听说运行QNX的主机可以无缝地组成一个大的QNET网络,能够共享文件, 也如唐先生所说只要权限允许可以把进程spawn()到其他QNX主机上.
不好意思,我又查了一下帮助,应该用qcp可以在QNET下面发送或接收文件,对吧.
另外,我按照QNET的帮助里启动io-net后怎么不能上网了(TCPIP好像失效了)?
io-net -dne2000 -ptcpip -pqnet
应该是driver选项错了,怎样看自己网卡的驱动?

tragicalwind,xtang讲的已经够清楚的了,你看一下spawn()的帮助就知道了,其中的nd需要通过你指定的机器的hostname的字符串调用函数转换而来,至于QNET下的文件共享,通过/net目录下文件的直接拷贝不是很方便吗?

真感谢!因为没有实践过,不知道/net目录下的文件其实就是双方共享的资源了。经指点,再想想帮助,应该如此。