int xsystem(const char *cmd)
{
    int err;

err = system(cmd);

if (err == -1) {
    fprintf(stderr, "%s: ERROR: fork failed before execution: `%s'\n",
        __FUNCTION__, cmd);
    return -1;
    }

if (WIFSIGNALED(err)) {
    fprintf(stderr, "%s: ERROR: Child process died due to signal %d: `%s'\n",
        __FUNCTION__, WTERMSIG(err), cmd);
    return -1;
    }

if (WIFEXITED(err)) {
    /* Normal child exit */
    return WEXITSTATUS(err);
    }

fprintf(stderr, "%s: ERROR: Received unintelligible return value from system: %d",
        __FUNCTION__, err);
    return -1;
}

子进程的结束状态返回后存于 status,底下有几个宏可判别结束情况:
WIFEXITED(status)如果若为正常结束子进程返回的状态,则为真;对于这种情况可执行WEXITSTATUS(status),取子进程传给exit或_eixt的低8位。
WEXITSTATUS(status)取得子进程 exit()返回的结束代码,一般会先用 WIFEXITED 来判断是否正常结束才能使用此宏。
WIFSIGNALED(status)若为异常结束子进程返回的状态,则为真;对于这种情况可执行WTERMSIG(status),取使子进程结束的信号编号。
 
 
 
 
nRet = system(sCommand);
 //WIFEXITED(stat)' 如果子进程正常退出则返回非;`WEXITSTATUS(stat)' 子进程返回的退出码  if (!((ZX_SYS_NO_ERROR != WIFEXITED(nRet)) && (ZX_SYS_NO_ERROR == WEXITSTATUS(nRet))))
 {   return -1;
 }
  测试的返回值为: 
 WIFEXITED(nRet)[[[1]]]
  WEXITSTATUS(nRet)[[[0]]]  rolesrv -k 这个命令执行成功的返回值为:0   
///////////////////////////////////////////////////////////////////////////////
system返回值描述 
-1 创建失败或者程序的退出状态无法获得,也就是fork或者waitpid失败 -----这个可能资源问题或者系统限制导致创建子进程失败。 127 执行程序失败,也就是exec失败------------------------------------执行脚本存在问题,例如程序无权限或者不存在。  
当前专家建议:
             请检查主机资源是否足够或者线程数超过系统设置最大阀值:
 
    修改后:
         返回为-1,请参考返回的系统错误码和错误信息,检查主机设置最大进程数和系统资源是否不足。
         返回为127,请检查执行脚本是否存在问题,例如没有权限或者执行程序不存在等
 
 
 
 

system返回值校验的更多相关文章

  1. linux c system返回值问题总结

    先看例子 #include <stdio.h> #include <stdlib.h> #include <sys/wait.h> #include <sys ...

  2. python os.system()返回值判断

    最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人. 一.python中的 os.system(cmd)的返回值与linux命令返回值 ...

  3. java自动化测试-json返回值校验

    参考: https://blog.csdn.net/xkhgnc_6666/article/details/50250283 实现举例:

  4. [转]system函数返回值探究

    对于system这个函数的功能早就有一定了解,读书期间,就学习了UNIX系统编程这本书,后来买了APUE.我这个人总是有好读书不求甚解的毛病.对于system函数只知其一,不知其二.后来被人问起相关的 ...

  5. Linux system函数返回值

    例: status = system("./test.sh"); 1.先统一两个说法: (1)system返回值:指调用system函数后的返回值,比如上例中status为syst ...

  6. js或者ext js获取返回值

      由于前台业务需要在判断中发起ajax到后台,根据返回值校验是否通过 代码如下 关键点在于要将async关闭 设置成同步,这样才能接收到要返回的flag                       ...

  7. SpringMVC 拦截返回值,并自定义

    有关取代mvc:annotation-driven使用自定义配置请看: http://blog.csdn.net/cml_blog/article/details/45222431 1.在项目开发中, ...

  8. 2. Bean Validation声明式校验方法的参数、返回值

    你必须非常努力,才能干起来毫不费力.本文已被 https://www.yourbatman.cn 收录,里面一并有Spring技术栈.MyBatis.JVM.中间件等小而美的专栏供以免费学习.关注公众 ...

  9. [Python陷阱]os.system调用shell脚本获取返回值

    当前有shell个脚本/tmp/test.sh,内容如下: #!/bin/bashexit 11 使用Python的os.system调用,获取返回值是: >>> ret=os.sy ...

随机推荐

  1. 山东省第四届ACM程序设计竞赛A题:Rescue The Princess

    Description Several days ago, a beast caught a beautiful princess and the princess was put in prison ...

  2. [SDOI2015]约数个数和 --- 简单反演

    求\(\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}d(ij)\) 不知道怎么讲..... 首先考虑\(d(ij)\)究竟是什么 首先,很自然地想到,既然是求\( ...

  3. 埃及分数 a* 搜索 知识点mark

    题意 在古埃及,人们使用单位分数的和(即1/a,a是自然数)表示一切有理 数. 例如,2/3=1/2+1/6,但不允许2/3=1/3+1/3,因为在加数中不允许有相同的. 对于一个分数a/b,表示方法 ...

  4. python3-开发进阶 django-rest framework 中的 版本操作(看源码解说)

    今天我们来说一说rest framework 中的 版本 操作的详解 首先我们先回顾一下 rest framework的流程: 请求进来走view ,然后view调用视图的dispath函数 为了演示 ...

  5. [QSCOJ39]喵哈哈村的代码传说 第五章 找规律

    题目大意: 给你n堆排,两人轮流对其中一堆牌进行以下操作之一: 1.从这堆牌中取出任意数量的牌: 2.将这这堆牌分为任意大小的3堆牌. 不能操作者负. 问先手是否有必胜策略. 思路: 尝试构造sg函数 ...

  6. Tarjan 算法详解

    一个神奇的算法,求最大连通分量用O(n)的时间复杂度,真实令人不可思议. 废话少说,先上题目 题目描述: 给出一个有向图G,求G连通分量的个数和最大连通分量. 输入: n,m,表示G有n个点,m条边 ...

  7. 在windows上安装和启动Elasticseach、Kibana

    写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 参考内容: <Ela ...

  8. Linux知识(4)----文件系统结构

    Ubantu 14.04的文件系统结构如下图所示: 参考资料: 1.http://www.cnblogs.com/wen858636827/archive/2012/12/26/2834373.htm ...

  9. 解决Could not open input file: think问题

    前几天做项目的时候,突然想用命令行创建TP5的控制器以及模型等 输入命令: >php think make:controller admin/Abc 报错如下: Could not open i ...

  10. X86调用约定 calling convention

    http://zh.wikipedia.org/wiki/X86%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A 这里描述了在x86芯片架构上的调用约定(calling con ...