在ARM平台上做嵌入式开发,发现通过其他系统系统调用去修改IP地址之后,设备会死机。于是采用修改/etc/network/interfaces之后重启的方式修改IP。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
//设置IP
void setip(char *buffer)
{
char * FILE_NAME = "/etc/network/interfaces";
FILE * file_fd;
int len = 0;
file_fd = fopen(FILE_NAME,"r+");
if(file_fd == NULL)
{
perror("errno");
}
//跳过开头的116个字节
fseek(file_fd,116,SEEK_CUR);
fwrite(buffer,strlen(buffer),1,file_fd);
fclose(file_fd);
}
//获取IP
void getip(char *buffer)
{
char * FILE_NAME = "/etc/network/interfaces";
FILE * file_fd;
int len = 0;
file_fd = fopen(FILE_NAME,"rb");
if(file_fd == NULL)
{
perror("errno");
}
//跳过开头的116个字节
fseek(file_fd,116,SEEK_CUR);
len = fread(buffer, 1, 13, file_fd);
if(len == -1)
{
printf("File read error!
");
perror("errno");
}
fclose(file_fd);
}
int main(int argc, char * argv[])
{
char ipbuffer[20]="192.168.1.112";
setip(ipbuffer);
getip(ipbuffer);
printf("ipbuffer is:%s
",ipbuffer);
system("reboot");
printf("rebooting!!!
");
return 0;
}