调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
int setmacaddr(unsigned char ipbyte)
{
char macaddr[50];
char ipaddr[30];
int retflag = 0;
memset(macaddr,0,50);
memset(ipaddr,0,30);
sprintf(macaddr,"/sbin/ifconfig eth0 hw ether 40:55:52:4d:43:%02x",g_NodeID + 100);
sprintf(ipaddr,"/sbin/ifconfig eth0 192.168.0.%d netmask 255.255.255.0",g_NodeID + 100);
if(system("/sbin/ifconfig eth0 down") != -1)
{
printf("1;");
if(system(macaddr) != -1)
{
printf("2;");
}
else
{
printf("3;");
lprintf(log,FATAL,macaddr);
retflag = 1;
}
if(system("ifconfig eth0 up") != -1)
{
printf("4;");
}
else
{
printf("5;");
lprintf(log,FATAL,"ifconfig eth0 up fail!\r\n");
retflag = 3;
}
}
else
{
printf("6;");
lprintf(log,FATAL,"ifconfig eth0 down fail!\r\n");
retflag = 4;
}
调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
当调用上述函数时,系统先通过printf("1;");打印出 1;然后系统自己打印出eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1,然后程序执行就退出了,没有进入我准备的失败判断分支,也没有进入我准备的执行正常分支,不知道从哪个分支退出的?
谁指出根本原因?