美文网首页
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进程的环境(一)

    2016-02-01 main函数 c程序总是从main函数开始执行。main函数原型int main(int a...

  • 4.进程环境

    进程环境 本节主要介绍Unix的进程环境。 1.命令行参数和环境表 大多数Unix系统支持main函数带3个参数:...

  • UNIX进程的环境(二)

    2016-02-02 命令行参数 当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序。其中argv[...

  • 浅谈僵尸进程与孤儿进程

    在《unix环境高级编程》中有提到僵尸进程和孤儿进程。不少同学对这两个概念会混淆,这篇文章总结一下。 在 unix...

  • APUE读书笔记-11线程(1)

    1、简介 我们前面讨论了进程,知道了unix的进程环境,进程之间的关系以及控制进程的方法。我们可以看到,进程间可以...

  • 孤儿进程与僵尸进程

    孤儿进程与僵尸进程[总结] 1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直...

  • APUE第11章 线程

    10.1 引言 在前面的章节中讨论了进程,学习了UNIX进程的环境、进程间的 关系以及控制进程的不同方式。可以看到...

  • Unix高级环境编程:进程控制

    计算机启动的过程 系统启动的经过可以汇整成底下的流程的:1、加载 BIOS 的硬件资讯与进行自我测试,并依据配置取...

  • UNIX系统进程间的通信方式

    unix进程间的通信方式

  • 浅议Unix的defunct进程(“僵尸”进程)

    最近在看Stevens的《Unix环境编程》,其中第八章讲到了进程的控制,里面有关于僵死进程的描述,但看完后还是不...

网友评论

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

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