unix编程(三)进程环境

来源:互联网 发布:淘宝网怎么下载 编辑:程序博客网 时间:2024/05/21 14:40

main函数

当内核执行c程序时,使用一个exec函数,在调用main函数之前先调用了一个特殊的启动例程。这个例程为程序的起始地址。启动例程从内核中取得命令行参数和环境变量值。

启动例程调用了main函数,然后退出。启动例程的代码一般用汇编,但是用c代码表示的话就是如下意思:

代码可以理解为:exit(main(argc,argc));


退出函数:

exit

_Exit

_exit

这里exit总是会执行一些I/O的清理关闭工作,对所有打开流调用fclose函数,这就使缓存区冲洗了。


函数atexit

一个进程可以登记32个函数,这些函数在exit自动调用,这些函数被称为终止处理程序。

#include <stdlib.h>

int atexit(void (*func)(void));

exit调用这些函数与它们登记顺序相反,并且相同函数登记多次,也会调用多次。


环境表

每个程序都接受到一张环境表,环境表示一个字符指针数组

extern char **environ;

具体可以使用如下函数获取所需要的环境变量

#include <stdlib.h>

char * getenv(const char *name);


函数setjmp和longjmp

这两个函数可以跳转函数,跳出当前函数栈。

setjmp和longjmp这两个函数对于处理在很深层嵌套的函数出错情况很有用。

具体使用还是看高级环境编程的书吧,有一点要注意,跳出当前函数栈,去另一个函数栈,它的自动变量要相当注意,一般使用volatile或者staic或者全局的变量,才能是变量保持不变。


函数getrlimit和setrlimit

获取/设置进程的资源,比如进程存储空间最大数等

1 0
原创粉丝点击