linux c使用system调用shell脚本

Posted 嵌入式Linux中文站

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux c使用system调用shell脚本相关的知识,希望对你有一定的参考价值。

嵌入式linux QQ交流群:175159209,欢迎爱好者加入交流技术问题!

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返回值获得。


嵌入式Linux中文站

最专业的中文嵌入式Linux网站,8年磨剑,注册用户数万人

分享 嵌入式 & Linux 技术干货、教程、资讯、高薪职位

订阅点击标题下方“嵌入式Linux中文站”

分享点击右上角分享按钮

投稿admin@embeddedlinux.org.cn

       点击下方“ 阅读原文 ”查看更多

以上是关于linux c使用system调用shell脚本的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何用c语言调用shell命令

如何在C语言中执行shell命令

如何在C语言中调用shell命令

如何在C语言中调用shell命令

linux c程序中获取shell脚本输出的实现方法

C语言能否用在shell脚本