当前位置:  技术问答>linux和unix

调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行

    来源: 互联网  发布时间:2017-03-06

    本文导语:  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);   ...

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!rn");
            retflag = 3;
        }
    }
    else
    {
        printf("6;");
        lprintf(log,FATAL,"ifconfig eth0 down fail!rn");
        retflag = 4;
}
调用system函数执行更改MAC地址异常退出,上面的设置命令直接在shell终端中或在单独的shell脚本中能正常执行
当调用上述函数时,系统先通过printf("1;");打印出 1;然后系统自己打印出eth0: link down
eth0: link up, 100Mbps, full-duplex, lpa 0x45E1,然后程序执行就退出了,没有进入我准备的失败判断分支,也没有进入我准备的执行正常分支,不知道从哪个分支退出的?
谁指出根本原因?

|
为何不判断返回值 == 0 ?

if(system("/sbin/ifconfig eth0 down") == 0)

|
为什么不直接该配置文件/etc/sysconfig/network-script/ifcfg-eth0

然后执行/etc/init.d/network restart

system在执行的时候,确保命令正确,没有必要检查返回值吧?直接一堆system执行下来就可以了。

    
 
 

您可能感兴趣的文章:

  • C中用system系统调用执行command,执行过程中死锁,如何处理?
  • 请问JAVA如何执行(调用)操作系统命令,如dir,然后把执行结果存入变量或文件,谢谢!
  • 执行一个main函数程序时,unix操作系统调用什么创建进程?fork?newproc?
  • 我自己写了一个一个程序,文件名叫test。。怎么能够像调用系统命令那样子去调用我这个命令呢。在任何地方输入test就能执行这个程序。
  • rc.local 脚本是在什么地方被调用执行
  • 如何调用执行档
  • C调用SHELL命令执行结果
  • 如何用java程序调用运行可执行文件??
  • 如何让java调用外部程序,并且不等待外部程序执行完毕,直接返回?
  • 怎样在网页上调用服务机可执行文件?
  • java 下如何调用 window or unix 下的可执行程序
  • jsp中如何调用可执行程序
  • Unix下System函数实现中为何要使用shell去调用执行程序?
  • linux下系统调用限定执行时间问题。
  • linux 如何调用可执行程序
  • 求教,bash脚本如何调用含键盘输入的可执行文件。
  • 如何实现linux下ant调用sh(带输入参数),参数自动填入并执行sh
  • 以普通用户的身份登陆到unix,能不能调用shell执行特定的操作?
  • AIX 5.3下调用windows 2000上的exe程序,且AIX下需要得到windows下程序执行的返回结果
  • linux下system函数调用shell命令后,怎样让主进程不等子进程返回,接着执行(在线)?
  • shell脚本如何调用另外一个shell脚本的函数?
  • C调用shell时,能否给shell传递参数
  • 如何编写Shell,当SQL执行完毕后,继续调用Shell命令。
  • 请问 怎么样在C中调用一个 shell,得到shell中一个参数的值
  • 求助关于Java调用shell再传值给shell的问题
  • 用shell调用api接口能实现吗?100分就是你的了
  • 如何用shell调用jar包!
  • 想在C程序中调用Shell脚本,咋办???
  • 请问:C语言中system怎样调用shell,谢谢!急!!!!!
  • 如何在shell 中调用 外部程序
  • 求助!!shell调用问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 脚本1调用脚本2,脚本2必须输入回车,如何在调用过程中自动输入回车
  • 脚本调用脚本出异常
  • 脚本中如何调用另外的一个脚本?
  • Shell脚本调用Sql脚本并向其中传递变量
  • 请教一个问题,CRONTAB执行脚本和SSH登陆后调用脚本有什么不同?
  • 程序调用脚本,脚本启动另一个程序,如何让原始程序彻底释放资源?
  • windows上脚本调用UNIX的脚本
  • cgi 中调用bash脚本问题?急 急 急
  • 如果想在任何地方都能直接调用一个shell脚本,而不用输入全路径,除了把PATH中加入该脚本父目录,还有什么做法吗?
  • suse11 环境下,程序调用shell脚本
  • shell脚本for循环中如何调用别的程序?
  • 如何用shell调用jar包! iis7站长之家
  • java调用sh脚本遇到export命令会卡住,sh不能调用子sh
  • 如何在C中调用linux shell脚本并传递参数?
  • unix 下web应用程序调用 一个写数据库的perl脚本 的问题。
  • 怎么在应用程序中调用一个脚本??
  • 请问:怎么调用shell脚本
  • /etc/X11/X 这个程序是由哪个脚本 调用启动的
  • 求教一个非常简单的关于shell脚本调用的问题
  • Shell中调用、引用、包含另一个脚本文件的三种方法
  • 在Python中使用SWIG调用C和C++程序
  • Linux添加系统调用时如何调用C语言库函数
  • sessionbean调用entitybean的时候还需要像Client一样远程调用对象吗??
  • system()调用 与 ioctl()调用
  • linux中为什么系统调用比普通函数调用更费时间?
  • 如何在LINUX下用一个普通文件调用一个自己编写的调用系统的文件
  • 可不可以用java调用其他语言的编译结果?(好象asp调用com那样)
  • 为什么我的BEAN 在WIN2000中调用没有问题,但在LINUX中调用有问题
  • 为什么守护进程调用调用getlogin会失败呢?
  • 用RMI进行远程对象调用的时候,可不可以实现多个调用远程对象的并发操作
  • 关于jsp调用javabean的问题!调用是成功了,但是有小问题!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3