方法一:直接一条Linux shell命令就可以修改,立即生效,但是只是暂时的。

方法二:直接修改网卡配置文件,就是长久的。
![]()
改好文件后,记得重启一下网卡,这样才能生效。

方法三:用C语言实现上面方法二的操作。
/*jupiter*/
//数组可以直接放想要修改的值 //比如
char IP[20]={0}; //char IP[20]="192.168.0.157";
char netmask[20]={0}; //char netmask[20]="255.255.255.0";
char gateway[20]={0};
void setip(char *buffer,char *netbuf,char *gatebuf)
{
char * FILE_NAME = "/etc/network/interfaces";
FILE * file_fd;
//int len = 0;
file_fd = fopen(FILE_NAME,"r+");
if(file_fd == NULL)
{
perror("errno");
}
//跳过开头的172个字节
fseek(file_fd,172,SEEK_CUR);
fwrite(buffer,strlen(buffer),1,file_fd);
//printf("offset1=%d\n",ftell(file_fd)); //可以打印出来看当前文件位置标识符的值
fseek(file_fd,10,SEEK_CUR);
fwrite(netbuf,strlen(netbuf),1,file_fd);
//printf("offset2=%d\n",ftell(file_fd));
fseek(file_fd,10,SEEK_CUR);
fwrite(gatebuf,strlen(gatebuf),1,file_fd);
//printf("offset3=%d\n",ftell(file_fd));
fclose(file_fd);
}
int main()
{
setip(IP,netmask,gateway);
system("/etc/init.d/networking restart"); //调用linux的shell命令重启网卡
//直接用字符串的不用下面几句,如果IP等数据是后续自己通过别的方式填的,就要注意是否需要给字符串加结束符,保证二次修改IP不会出现问题。
IP[0]='\0';
netmask[0]='\0';
gateway[0]='\0';
}
本文介绍了一种使用C语言来持久性地修改Linux系统的网卡配置的方法,包括IP地址、子网掩码和网关。这种方法通过直接操作网卡配置文件实现,并提供了完整的示例代码。
4910





