转载于:http://blog.csdn.net/cmzsteven/article/details/49049387

在进行源代码编译,或者执行命令无法确认所执行的命令是否成功执行的情况下,我们都会使用 echo $? 来进行测试。

如果返回值是0,就是执行成功;如果是返回值是0以外的值,就是失败。

之前在学习的时候只是机械的接受了这个事实,没有考虑背后的原理。

这二天在查看资料的时候突然看到了“进程生命周期”的知识:

当一个进程执行完毕时,该进程会调用一个名为 _exit 的例程来通知内核它已经做好“消亡”的准备了。该进程会提供一个退出码(一个整数)表明它准备退出的原因。按照惯例,0用来表示正常的或者说“成功”的终止。

也就是说我们在执行 echo $? 时反回的值就是进程的退出码。而且,这个退出码是由刚刚执行完的进程提供给系统内核的。

更多linux资料请查看:http://www.apelearn.com/bbs/?fromuid=4297

使用echo $? 查看命令成功执行的原理的更多相关文章

  1. 使用echo $? 查看命令是否执行成功

    shell中的特殊变量:变量名含义$0shell或shell脚本的名字$*以一对双引号给出参数列表$@将各个参数分别加双引号返回$#参数的个数$_代表上一个命令的最后一个参数$$代表所在命令的PID$ ...

  2. [Shell]Bash基本功能:多命令顺序执行与管道符

    /*----------------------------------------------------------------------------------------------- @黑 ...

  3. 多命令顺序执行、管道符 ; && || |

    多命令顺序执行:

  4. python中模拟进行ssh命令的执行

    在进行socket编程的时候,可以实现远程执行命令,然后返回相关的结果,但是这种...很容易就把服务器搞挂了. 在这里需要用到commands模块,commands模块中有一个方法为getstatus ...

  5. 解决命令行执行shell脚本成功,但crontab执行失败

    实际生产案例 生产机房自建PPTP客户端通过拨号连接到生产机房,但是一旦客户端网络是意外断线再重新拨号 会产生IP冲突,于是写了一个脚本监控PPTP的IP是否有多个(一般冲突以后会生成2个IP) #! ...

  6. shell 中如何判断前一个命令是否执行成功

    shell 中如何判断前一个命令是否执行成功 通过判断返回值来解决: if [ $? -eq 0 ];then 命令正确的分支 else   命令失败的分支 fi

  7. linux使用npm成功安装命令后,执行时却报找不到命令的问题

    # 使用npm安装serve命令 ~$ npm install serve --global 安装成功 # 可是执行命令会报错 ~$ serve -v bash: serve: command not ...

  8. shell脚本中判断上一个命令是否执行成功

    shell脚本中判断上一个命令是否执行成功 shell中使用符号“$?”来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败.结合if-else语句实现判断上一个命令是否执行成功. 示例 ...

  9. windos或linux中 which命令 查看当前要执行的命令所在的路径

    whereis 用来查看一个命令或者文件所在的绝对路径,而 which 用来查看当前要执行的命令所在的路径. 下面举个例子来说明.加入你的linux系统上装了多个版本的java.如果你直接在命令行敲命 ...

随机推荐

  1. 自动上传本地图片和word图片(word图片需使用从word粘贴功能)

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  2. Codevs 2482 宝库通道 2007年省队选拔赛安徽

    2482 宝库通道 2007年省队选拔赛安徽 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 探宝的旅程仍然继续中,由于你的帮助 ...

  3. Visual Studio Code(VS code)介绍

    一.日常安利 VS code VS vode特点: 开源,免费: 自定义配置 集成git 智能提示强大 支持各种文件格式(html/jade/css/less/sass/xml) 调试功能强大 各种方 ...

  4. FreeMarker学习(常用指令)

    参考:http://freemarker.foofun.cn/dgui_quickstart_basics.html assign: 使用该指令你可以创建一个新的变量, 或者替换一个已经存在的变量 a ...

  5. iconfont最基础使用

    iconfont最基础使用 一.总结 一句话总结: 你加入购物车然后下载好了图标之后,里面有demo_index.html,会非常详细的教你 Unicode/Font class/Symbol三种使用 ...

  6. LC 583. Delete Operation for Two Strings

    Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...

  7. 发布机制-灰度发布-例子:QZone

    ylbtech-发布机制-灰度发布-例子:QZone QZone是另外一个采用灰度发布的例子.大家都知道,QZone在过去的一年中改进是巨大的,从以前慢悠悠的老爷爷变成了一个充满青春活力的小伙子.其中 ...

  8. ubuntu更换源的方法

    1.查看ubuntu版本的方法: 使用命令 sudo lsb_release -a 输出如下: root@localhost:/etc/apt# sudo lsb_release -aNo LSB m ...

  9. Mysql Errors

    Mysql Errors Table of Contents 1. ERROR 1044 1.1. 42000 2. ERROR 1045 2.1. 28000 2.1.1. 无登录权限 2.1.2. ...

  10. mybatis之动态SQL操作之更新

    1)  更新条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层*/ public class StudentDao { /** * 动态SQL--更新 */ public ...