linux c使用system调用shell脚本

嵌入式技术

1362人已加入

描述


system的原理其实就是调用fork创建子进程去执行shell命令,然后返回最后一条shell命令的状态值。linux下man system可以看到返回值说明:
 
1.如果返回值等于-1就是system函数执行失败,准确的说是fork创建子进程失败。
2.shell执行最后一条语句的状态值放在返回值的低8位,使用WEXITSTATUS宏可以获得状态值。
3.使用WIFEXITED宏取返回值判断是否执行成功,如果返回真就成功。
 
综上,可以看出来,首先我们要判断system返回值不等于-1那么fork成功了,然后判断WIFEXITED为真那么调用shell成功,最后判断WEXITSTATUS获得shell执行状态值是否为0就是成功。
 
int sh_shell(const char *command)
{
    int ret = system(command);
    if (-1 == ret)
    {
        printf("sh_shell fork fail");
        return -1;
    }
    else  
    {  
        printf("sh_shell exit ret = 0x%x", ret);
        if (WIFEXITED(ret))  
       {
            if (0 == WEXITSTATUS(ret))  
            {  
                 printf("sh_shell success");  
                 return 0;
             }  
             else  
            {
                 printf("sh_shell fail, shell status: %d", WEXITSTATUS(ret));
                 return -1;
             }  
         }  
        else  
        {  
            printf("sh_shell exit status = %d", WEXITSTATUS(ret));  
            return -1;
        }  
    } 
}
 
在脚本中你想返回自定义值,也是可以通过return或者exit返回给程序,程序通过system返回值获得。


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分