zoukankan      html  css  js  c++  java
  • 读书笔记,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 程序设计大全》吴岳)

  • 相关阅读:
    中介者模式(Mediator Pattern)
    状态模式
    命令模式(Command Pattern)
    迭代器模式(Iterator Pattern)
    解释器模式
    备忘录模式
    访问者模式(Visitor Patten)
    责任链模式(chainOfResponsibility)
    .net下安装 ZooKeeper.Net
    Zookeeper .Net客户端代码
  • 原文地址:https://www.cnblogs.com/ymy124/p/2310305.html
Copyright © 2011-2022 走看看