mmap函数
mmap(内存映射)函数的作用是建立一段可以被两个或更多个程序读写的内存,一个程序对它做的修改可以被其他程序看到。这一功能可以用在文件处理上,方法,mmap函数创建一个指向内存区域的指针,该内存可以通过一个打开的文件描述符访问与文件的内容相关联。
#include"stdio.h"
void *mmap(void *addr,size_t len,int prot ,int flags,int fildes,off_t off);
可以通过传递参数off改变共享内存段访问的文件中数据的起始偏移值,打开文件描述符fildes参数给出,每个用户可访问的段长度由len参数设置。addr参数来请求使用某个特定内存地址,如果是0则自动分配。port用于设置内存段的访问权限,它是下列长数组的按位OR的结果。
- PROT_READ:允许读内存段;
- PROT_WRITE:允许写该内存段;
- PORT_EXEC:允许执行该内存段;
- PORT_NONE:静止访问该内存段。
msync函数
msync函数的作用是:内存段的某个部分或整段中的修改写回到映射的文件中
#include"stdio.h"
int msync(void *addr ,siez_t len,int flags);
nummap函数
nummap的作用是释放内存段。
errno的基本用法
error是一个包含在<errno.h>中的预定义的外部int变量,用于表示最近一个函数调用是否产生了错误。若为0,则无错误,其它值均表示一类错误。
perror()和strerrot()函数可以把errno的值转化为有意义的字符输出。
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <errno.h>
#include <string.h>
int main(void){
extern int errno;
errno=0;
opendir("/home/kkk");
printf("%d\n", errno); //用法1:直接读取errno的值,根据errno的值,可以通过/usr/include/asm-generic/errno-base.h对应查看错误信息
if(errno != 0){
perror("opendir: "); //用法2:使用perror函数,把error的值转化为有意义的字符提示。
// exit(EXIT_FAILURE);
}
if(errno != 0){
printf("%s\n", strerror(errno)); //用法3:类似用法2,但使用strerror函数。
exit(0);
}
exit(0);
}