• 读书笔记,echo$?得到进程结束状态


    $?是Linucx shell中的一个内置变量,其中保存最近一次运行的进程的返回值。这个返回值有以下三种情况。

    1,程序的main函数运行结束,$?保存main函数的返回值。

    2,程序运行中调用exit函数结束执行,$?中保存exit的参数。

    3,程序异常退出,$?保存异常的出错号。

    #include<stdio.h>

    int main()

    {

    ruturn 5;

    }

    运行该代码后,执行echo ¥?,显示:5

    $?内置变量中的1表示shell运行程序出错,在shell默认的路径找不到指定的程序。所以在编写代码时如果没有出错,则不要用main函数return 1 或者exit(0)这样的写法,以免引起不必要的混乱。

    再看另一段代码

    #inclide<stdio.h>

    int main()

    {

    printf("hello world\n");//没有return 语句

    }

    这时echo $?显示12,即printf函数的返回值,因此有可能echo$?取的就是eax寄存器的值,不过如果是这样,那假设本电脑是多处理器的,运行一个多线程程序,多个线程同时返回,那这时echo $?的返回值又是什么呢?唉,暂时不得而知。。。。

    (文中大部分内容出自《linux c 程序设计大全》吴岳)

  • 相关阅读:
    day30---内置函数
    day30---绑定方法与非绑定方法
    元类以及属性查找
    python 内置方法/魔法方法
    python 面向对象高级-反射机制
    centos7下jenkins升级
    屏蔽百度右侧热搜
    centos7部署汉化版gitlab
    CentOS 7 安装 Jenkins
    centos7安装与配置ansible
  • 原文地址:https://www.cnblogs.com/ymy124/p/2310305.html
Copyright © 2020-2023  润新知