进程环境

  • 当内核起动C程序时(使用一个exec()函数),在调用main()前先调用一个特殊的起动例程。可执行程序文件将此起动例程指定为程序的起始地址——这是由连接编辑程序设置的,而连接编辑程序则由C编译程序(通常是cc)调用。起动例程从内核取得命令行参数和环境变量值,然后为调用main()函数作好安排。
  • 有五种方式使进程终止
    正常终止
    从main()返回
    调用exit()
    调用_exit()
    异常终止
    调用abort()
    由一个信号终止
    wait()/waitpid()可以获得进程终止的状态
  • 按照ANSIC的规定,一个进程可以登记多至32个函数,这些函数将由exit()自动调用。我们称这些函数为终止处理程序(exit handler),并用atexit()函数来登记这些函数。
    atexit()的参数是一个函数地址,当调用此函数时无需向它传送任何参数,也不期望它返回一个值。exit()以登记这些函数的相反顺序调用它们。同一函数如若登记多次,则也被调用多次。
  •  

  • 每个程序都接收到一张环境表。与参数表一样,环境表也是一个字符指针数组,其中每个指针包含一个以null结束的字符串的地址。全局变量environ则包含了该指针数组的地址。
    extern char **environ;
    按照惯例,环境由name=value格式的字符串组成
    getenv()/putenv()/setenv()可以用来取得/设置环境变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值