Linux下c语言通过修改/etc/network/interfaces修改IP

2019-07-13 09:11发布

在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; }