1本章中将学习:当执行程序时,其main函数是如何被调用的,命令行参数是如何传送给执行程序的;典型的存储器布局是什么样式;如何分配另外的存储窨;进程如何使用环境变量;各种不同的进程终止方式等. 
2main原型:
int main(int argc,char*argv[]);
其中,是命令行参数的数目,是指向参数的各个指针所构成的数组
3进程终止
有8种方式使进程终止,其中5种为正常终止,它们是:
  1从main返回
  2调用exit
        3调用_exit或_Exit
  4最后一个线程从其启动全程返回
  5最后一个线程调用pthread_exit
异常终止有3种方式
  6调用abort
        7接到一个信号并终止
  8最后一个线程对取消请求做出响应
4命令行参数
 #include "apue.h"
    int main(int argc,char*argv[])
    {
     int i;
     for(i=0;i<argc;i++)
        printf("argv[%d],%s\n",i,argv[i]);
     exit(0);
     }
5环境表
6C程序的存储空间分布
 正文段,初始化数据段,非初始化数据段,栈,堆
 size(1)命令报告正文段,数据段和bss段的长度(单位:字节)
7共享库
    阻止使用共享库
 cc -static hello.c
8存储器分配
 (1)malloc 分配指定字节数的存储区
 (2)calloc 为指定数量具指定长度的对象分配存储空间
 (3)realloc 更改以前分配区的长度
9环境变量
 环境字符串的形式通常如下:
  name=value
    ISO C 取环境变量值:
  #include <stdlib.h>
       char *getenv(const char *name);
   
  #include<stdlib.h>
       int putenv(char *str);
         取形式为name=value的字符串,将其放到环境表中,如果name已经存在,则先删除其   原来的定义
    int setenv(const char *name,const char*value,int rewrite);
         将name设置为value,如果在环境中name已经存在,那么若rewrite非0,则首先删除其现在的定义,若rewrite为0,则不删除其现有定义(name不设置为新的value,而且也不出错).