linux 进程环境

  1. 内存
    a. 代码段又叫正文段。这部分存放的是进程的执行代码,是进程中所有线程所共享的,并且是只读的。常量也放在代码段里。
    b. 初始化数据段。又叫数据段,存放程序代码里初始化时赋值过的变量。
    c. 未初始化数据段。又叫bss段,存放程序代码里初始化时未赋值过的变量。
    d. 。存放函数调用时申请的临时变量,在函数返回时释放。
    e. 。存放动态申请的变量,调用free()释放 或 进程结束时释放。

  2. 环境变量
    a. 每个进程都有一个环境变量表,这是一个指针数组。
    b. extern char **environ 变量指向这个指针数组的首地址。
    c. 环境变量表的存储格式为
    {“name=value”,“name=value”,…,NULL}
    d. 环境变量的操作函数如下:

//获取环境变量表中name对应的value
char *getenv(const char *name);
				成功:返回指向 value 的指针;失败:返回 NULL
				
//设置环境变量到环境变量表中,若name已存在,则删除后在设置
int putenv(char *str); 		//str = {"name=value"};
				成功:返回 0;失败:返回非 0
				
//设置环境变量到环境变量表中,若name已存在,则看rewrite参数
//1. 若rewrite非0,则可以修改name对应的value
//2. 若rewrite是0,则不能修改name对应的value,但不算出错
int setenv(const char *name, const char *value, int rewrite);
			成功:返回 0;失败:返回 -1

//删除环境变量
int unsetenv(const char *name);
			成功:返回 0;失败:返回 -1
  1. 共享库(动态库)与静态库
 共享库编译命令:
 		gcc -fPIC -c *.c -o *.o
		gcc -share -o libname.so *.o		//name 就是共享库的名字
		
静态库编译命令:
		gcc -c *.c -o *.o
		ar -r libname.a *.o	//name 就是静态库的名字
  1. 进程资源
    每个进程都有一组资源限制,其中一些可以通过下列函数查看和修改。
int getrlimit(int resource, struct rlimit *rlptr);
int setrlimit(int resource, const struct rlimit *rlptr);
				成功:返回 0; 失败: 返回非0
  1. 进程退出操作
    a. 进程正常的退出时通过 return 或 调用 exit()。
    b. 在(a)之后会通过系统调用接口调用内核中的函数_exit()或_Exit()。
    c. 在(a)和(b)之间,进程允许执行一些用户定义的函数。
    b. 调用atexit()函数可以完成(c)操作。
int atexit(void (*func)(void));
			成功:返回0;失败:返回非 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值