美文网首页
UNIX进程的环境(一)

UNIX进程的环境(一)

作者: 千里山南 | 来源:发表于2016-02-01 21:00 被阅读62次

    2016-02-01

    main函数

    c程序总是从main函数开始执行。main函数原型
    int main(int argc, char *argv[])
    其中 argc 是命令行参数的数目,argv是指向参数各个指针所构成的数组
    当内核启动c程序时(通过exec函数)在调用main前先滴啊用一个特殊的启动例程。可执行程序文件将此启动例程指定为程序的起始地址。这是由连接编辑程序设置的,而链接编辑程序则由c编译程序调用。启动例程从内核取得命令行参数和环境变量,然后为调用main函数做好安排。

    进程终止

    有5中方式使进程终止

    • 正常终止:
      • 从main返回
      • 调用exit
      • 调用_exit
    • 异常终止
      • 调用abort
      • 由一个信号终止
        上节提到的启动例程是这样编写的,使得从main返回后立即调用exit函数

    exit和_exit

    exit和_exit函数用于正常终止一个程序:_exit立即进入内核,exit则先执行一些清除处理(关闭标准io等)然后进入内核
    #include<stdlib.h>
    void exit(int status)
    #include<unistd.h>
    void _exit(int status);
    exit 和 _exit都带有一个整型参数,称为终止状态。大多数unix shell都提供检查一个进程终止状态的方法。如果调用这些函数时不带终止状态或者main 执行了一个无返回值的return语句,或者main执行隐式返回,则进程的终止状态是未定义的,程序是不完整的。

    atexit函数

    按照ANSI C规定,一个进程可以登记多至32个函数,这些函数由exit自动调用。饿哦们称这些函数称为终止处理程序,并用atexit函数登记这些函数。
    int atexit(void (*func)(void))
    其中 atexit的参数是一个函数地址,当调用此函数时无需向它传送任何参数。exit 以登记这些函数的相反顺序滴啊用他们,同一函数如若登记多次,则也调用多次。
    exit 调用各种终止处理程序然后按需多次调用fclose关闭所有打开流。

    相关文章

      网友评论

          本文标题:UNIX进程的环境(一)

          本文链接:https://www.haomeiwen.com/subject/lcbskttx.html