system返回值

刚用到system函数,要根据其返回值来做进一步操作,可是system的返回值并不等于其调用的程序的返回值,man了没看懂,后来在网上搜索了一下,终于看到了一个DX的理解,记录之。

引自:原文

要分成两部分来说: 
1,在程序中,用exit来设置进程的退出值时,虽然该函数的参数类型为int型,但再父进程中只能取到其值的低8位.所以用exit返回值时,高于255的值是没有意义的. 

2,对于system函数,返回值是由两部分组成的,低8位值表示所执行的脚本在执行过程中所接收到的信号值,其余的位表示的脚本exit退出时所设置的值

测试代码:u'V0O a-G0K&^f
#include <stdio.h>

int main()
{
 int  ret;
 
 ret = system("exit 0");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 1");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 2");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 3");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 4");
 printf("ret%d  ret%d\n",ret,ret/256);

 ret = system("exit 5");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 6");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 7");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 8");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 9");
 printf("ret%d  ret%d\n",ret,ret/256);

 ret = system("exit 10");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 11");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 12");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 13");
 printf("ret%d  ret%d\n",ret,ret/256);
 
 ret = system("exit 14");
 printf("ret%d  ret%d\n",ret,ret/256);
}

ret0  ret0
ret256  ret1
ret512  ret2
ret768  ret3
ret1024  ret4
ret1280  ret5
ret1536  ret6
ret1792  ret7
ret2048  ret8
ret2304  ret9
ret2560  ret10
ret2816  ret11
ret3072  ret12
ret3328  ret13
ret3584  ret14

如果还不放心请看下面的代码:

包含文件
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
先写一个被调用的函数
==================================
#include <iostream>
int main()
{
printf("Return 10./n");
return 10;
}
==================================
编译后生成一个"rt"的可执行文件
运行结果
==================================
Return 10.
==================================
再写一个调用system的程序
==================================
#include <stdio.h>;
#include <stdlib.h>;
#include <sys/wait.h>;
#include <sys/types.h>;

int main()
{

        pid_t status ;

       int errno = 0 ;
        status = system("./rt") ;

printf("wifexited(status):%d/n",WIFEXITED(status));
printf("WEXITSTATUS(status):%d/n",WEXITSTATUS(status));
        if (status == -1)
                printf("system error!") ;

        if (WIFEXITED(status)){
                printf("cp exit normal![%d]/n", errno) ;
                printf("exit staus = [%X]/n", WEXITSTATUS(status)) ;
        }else
                printf("cp exit illegal![%d]/n", errno) ;
}
~
[tiantao@probe sys_test]$ cat sys_test.cpp
#include <stdio.h>;
#include <stdlib.h>;
#include <sys/wait.h>;
#include <sys/types.h>;

int main()
{
       
        pid_t status ;
       
       int errno = 0 ;
        status = system("./rt") ;
       
printf("wifexited(status):%d/n",WIFEXITED(status));
printf("WEXITSTATUS(status):%d/n",WEXITSTATUS(status));
        if (status == -1)
                printf("system error!") ;
       
        if (WIFEXITED(status)){
                printf("cp exit normal![%d]/n", errno) ;
                printf("exit staus = [%X]/n", WEXITSTATUS(status)) ;
        }else
                printf("cp exit illegal![%d]/n", errno) ;
}

==================================
编译后运行结果
==================================
Return 10.
wifexited(status):1
WEXITSTATUS(status):10
cp exit normal![0]
exit staus = [A]
==================================
可以看到:
WEXITSTATUS(status)可以得到调用程序的返回值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中,os.system(command) 函数执行指定的 shell 命令,并返回命令执行的状态码。如果命令执行成功,则返回 0,否则返回非零。如果命令无法执行,则返回 -1。同时,该函数会直接在终端中打印出命令的输出结果。如果需要获取命令的输出结果,可以使用 subprocess 模块中的函数。 ### 回答2: os.system()是Python中用于执行系统命令的函数,它会调用操作系统的shell来执行指定的命令,并返回一个表示执行结果的返回值。 当os.system()执行成功时,返回值为0,表示命令执行成功完成。这意味着系统命令已经顺利执行,并且不会返回任何错误信息。 如果os.system()执行失败,返回值为非零整数。返回值通常可以表示不同类型的错误或异常情况。具体的返回值与不同的操作系统和执行的命令有关。 需要注意的是,os.system()只返回命令的退出状态码,而不包括命令的输出结果。如果需要获取命令的输出结果,可以使用其他方法,比如subprocess模块中的函数。 总之,os.system()的返回值可以让我们判断执行命令是否成功,以及获取执行结果的状态信息。 ### 回答3: os.system()函数是Python标准库中的一个函数,它用于执行操作系统的命令。它接受一个命令作为参数,并在操作系统中执行该命令。该函数的返回值是命令执行的状态码。 当命令成功执行时,os.system()函数的返回值为0。这表示命令执行成功并且没有出现错误。如果命令执行失败或者出现错误,os.system()函数的返回值将是一个非零的整数。这个返回值有助于我们判断命令执行的结果。 我们可以根据os.system()的返回值来判断命令是否执行成功。例如,如果我们执行一个命令并希望根据结果进行不同的操作,我们可以使用条件语句来判断os.system()的返回值。 需要注意的是,os.system()函数在某些操作系统上可能会以不同的方式工作。因此,在使用这个函数时,我们需要考虑到不同操作系统的差异带来的影响。 为了更好地控制执行命令的结果,我们还可以使用subprocess模块中的更强大的函数来代替os.system()函数。subprocess模块提供了更高级的接口,可以更灵活和安全地执行系统命令,并获取其输出及错误信息。 总而言之,os.system()函数返回的是命令执行的状态码,用于判断命令是否执行成功。我们可以根据这个返回值来进行后续的操作,并注意不同操作系统的差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值