请教怎样在程序中改变IP地址

项目有这个要求,原来的ip地址是在image里的启动script 中指定的。

按照要求,可以修改ip地址而不需改变执行程序。想采用配置文件之类的方法,可是又不知道怎样去做。请xtang等大侠指教。谢谢了。

看你具体有多复杂。

ifconfig 就可以用来手工修改地址。就算image里把地址设成了A,你也可以在启动后用ifconfig 把地址改成B。

其它的自动设地址的还有dhcp和autoip.

谢谢xtang的回复。我还有些地方不明白。

我要在程序里面修改IP地址,那么是不是需要通过调用exec()或system()函数来执行ifconfig命令?

另外我想通过一个script文件来实现,这样的好处是我直接将这个文件通过网络放到目标机上,从新启动后在程序初始化时执行这个script就可以修改ip地址了。不知道这样行不行。这又涉及到在程序中执行script的问题,这我就不会了。大侠能不能继续指点一下,最好能给出一点具体的小例子。非常感谢!唉,我的水平太菜了。

你最好还需要知道image里面除了设置IP之外还有没有其他程序使用ip地址的,dumpifs看一下吧,或者dump出来,重新做个image也不是难事。
如果有,需要考虑清楚这些程序使用ip地址后,你在sysinit里面或者其他方式改变ip地址带来的影响。
如果没有,直接在sysinit里面用脚本改变即可,写程序反而显得麻烦。

在一个可执行程序里,执行另一个可执行程序,或是脚本的话,有spawn*()可用。spawnl()应该就能满足你的要求了吧。

不过楼上说的对,你还要担心在你修改地址之前,是否有程序已经在使用旧的地址了。如果有的话,你强行改地址对这些应用程序就有可能有影响。

首先感谢两位热情相助,谢谢。

情况是这样的,项目要求中有这样的内容,原文如下:

IP Address: All payloads connected to the network shall support reconfiguration of their IP address without requiring software modifications.

Rationale: Reconfigurable IP address will enable payload to be configured to connect to the same router if required and allow the resolution of IP conflicts.

我完成的部分就是其中一个payload. 我理解用户想方便地修改ip地址。当然重新生成image 可以方便地修改ip. 但好像不够符合要求。我就想到在程序中读取配置文件,或者执行script来修改ip。

我看了一下qconn 就需要使用ip地址,这样看来还不能随便修改。可是针对这样的要求,有什么好办法吗?再次感谢

如果有其他程序使用ip地址,那么我是不是应该先将他们slay掉,改变ip地址后在重新执行他们。这样可以吗?谢谢

在你的项目里,payload具体是指什么意思?

这是CSA (canada space agency)的项目,有很多设备都要连接到CSA的网络上去,那么CSA对这些设备就提出这样的要求。针对我们公司的情况,我们提供一个机械臂。机械臂的运动控制器是pc104,准备采用qnx操作系统。这个控制器通过ethernet接受操作者的控制信号。这样payload就是机械臂及其控制器,具体就是一个运行qnx的pc104. 这个控制器完全由我们来开发。

原来打算裁剪一下作个image.现在看来,存储空间足够,好像不剪裁,直接安装上去似乎也行。