Linux系统编程_6_进程环境(C程序典型的存储空间)

Posted claireyuancy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统编程_6_进程环境(C程序典型的存储空间)相关的知识,希望对你有一定的参考价值。

1.八种结束Linux进程的方法:

五种正常终止方式:

   main函数返回;

   调用exit;

   调用_exit或_Exit

   最后一个线程从其启动例程返回

   最后一个线程调用pthread_exit

三种异常终止方式:

   调用abort。

   接收到一个信号终止;

   最后一个线程对取消请求做出响应。


      exit函数与_exit  _Exit函数的差别是exit函数在结束进程之前会调用各种终止处理程序,关闭全部IO流,这会造成全部缓冲中的数据被冲洗(写到磁盘文件);

      atexit(void (*fun)void)函数,用来给进程注冊函数。退出时会运行注冊过的函数。注冊几次会调用几次。


2.命令行參数与环境表:

extern char **environ;  //每一个程序都会有一张环境表,与參数表一样,环境表也是一个字符指针数组,当中每一个指针以NULL(\0)结束;

全局变量environ指向了该环境表的首地址;

#include <stdio.h>

int main(int argc, char **argv, char **env)
{
    int i;

    printf("================Argv Pram===================\n");
    for(i=0; i<argc; i++)
    {
        printf("argc[%d]= %s\n", i, argv[i]);
    }

    printf("\n=============Environment Pram==============\n");
    for(; *env != NULL; env++)
    {
        printf("%s\n", *env);
    }

    return 0;
}

运行结果:

================Argv Pram===================
argc[0]= ./main


=============Environment Pram==============
HOSTNAME=150
SELINUX_ROLE_REQUESTED=
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=192.168.0.88 12069 22

(......)

3. C程序典型的存储空间

C程序典型的存储空间例如以下:

技术分享

        对于X86处理器的Linux上,正文段从0x08048000单元開始,栈底则在0xc0000000之下開始。堆顶和栈底之间未使用的空间非常大。

注意:未初始化的bss段并不存放在磁盘上的程序文件里,原因是内核在程序開始执行前都将它们设置为0,须要存放在程序文件里的段仅仅有正文段和初始化数据段。


















以上是关于Linux系统编程_6_进程环境(C程序典型的存储空间)的主要内容,如果未能解决你的问题,请参考以下文章

020_Linux的孤儿进程与僵尸进程(Unix系统编程)

UNIX环境高级编程第七章

Unix高级环境编程学习小结

Linux系统编程(进程)———进程退出

Linux系统编程(进程)———进程退出

Linux系统编程(进程)———进程退出