Linux系统学习笔记(第三天)

错误处理

1、通过函数返回值表示错误
	返回值合法表示成功,非法表示失败
	返回有效指针表示成功,空指针(NULL/0xffffffff)表示失败
	返回0表示成功,-1表示失败。
	永远成功,printf
2、通过errno表示错误
	errno是一个全局变量,它的声明在errno.h文件中,它的值随时可能发生变化。
	可以将它转换成有意义的字符串,strerror(errno) <=>perror("msg")
	注意:在函数执行成功的情况下,不会修改errno的值。
		因此不能以errno的值不等于0就判断函数执行出错了。
		所以通常会和函数的返回值配合,通过返回值判断是否出错,而通过perror查询出了什么类型的错误。

环境变量

以字符串形式存在的,绝大多数记录的是路径信息,它表示了当前操作系统的资源配置,以及环境设置等相关信息。
1、环境变量表
	每个程序运行时,操作系统都会把所有的环境变量记录到一张表中,传给程序。
#include<stdio.h>
   		int main(int argc,char* argv[],char* environ[])
   		{
       		for(int i=0;environ[i];i++)
       		{
	    		printf("%d %s\n",i,environ[i]);
      	    }
  	    }
2、环境变量函数
char* getenv(const char *name);
	功能:根据环境变量名,获取环境变量的值。
int putenv(char *string);
功能:以name=value形式设置环境变量,如果环境变量存在则更新,不存在则添加。
返回值:成功返回0,失败返回-1
int setenv(const char *name,const char *value,int overwrite);
功能:设置name环境变量的值为value,name不存在则更新,如果name存在且overwrite不为0则更新,否则不变。
int unsetenv(const char *name);
功能:从环境变量表中删除name
int clearenv(void);
功能:清空环境变量表。
注意:操作系统记录的环境变量的数据记录一块特殊的存储空间,而在程序自己添加的环境变量需要自己准备存储空间。
注意:对于环境变量的修改,只能影响自己,不能影响别人。

内存管理

自动分配/释放内存auto_ptr    STL   调用标准C++中的new/delete
new/delete 构造/析构		   C++    标准C中的malloc/free
malloc/free				   标准C   调用POSIX
brk/sbrk				   POSIX  调用Linux系统接口
mmap/munmap				   Linux  调用内核接口
kmalloc/vmalloc			   内核	  调用驱动
get_free_page			   驱动	  ......

进程映像

程序是保存在磁盘上的可执行文件,加载到内存中被操作系统调用执行的程序叫进程(一个程序可以被同时执行多次形成身份不同的进程)。
进制在内存空间中的分布情况叫进制映像,从低地址到高地址依次排列的是:
代码段/只读段:
	二进制指令、字符串字面值、具有const属性且被初始化过的全局、静态变量。
数据段:被初始化过的全局变量和静态变量。
BSS段:没有初始化过的全局变量和静态变量,进程一旦加载成功就会把这段内存清理为零。	
堆:动态的分配、管理,需要程序员手动操作。
栈:非静态的区部变量,包括函数的参数、返回值。
	从高地址向低地址使用,和堆内存之间存在一段空隙。
命令行参数及环境变量表:命令行参数、环境变量
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值