首页 技术 正文
技术 2022年11月21日
0 收藏 831 点赞 3,542 浏览 2319 个字
一、malloc的实现机制(缓冲机制)
库函数跟系统调用之间的关系
什么是缓冲?
内存分配的原理。封装 函数A的实现代码中调用了函数B。函数B的功能是函数A主要的功能,这样就说函数A封装了函数B。举例说明 malloc的实现机制(缓冲) 代码参见malloc.c
080f8-
33块内存管理结束了二、文件的操作(文件内容的操作)文件的打开、关闭、读、写、读写位置的重定位
标c中 fopen() fclose() fread() fwrite() fseek()...
系统调用 open() close() read() write() lseek()
open()
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);int open(const char *pathname, int flags,...);
功能:打开一个文件,有可能创建一个文件
参数:
pathname:指定要打开的文件的名字
flags:三选一:
O_RDONLY:只读
O_WRONLY:只写
O_RDWR:可读可写另外,可以按位或0个或多个创建标记和状态标记
O_CREAT: 如果文件不存在,创建文件。第三个参数mode指定了新文件的权限。新文件的权限为mode & ~umaskO_EXCL:如果和O_CREAT在flags中被一起指定,文件存在,报错。O_NOCTTY:
O_TRUNC:打开的文件存在,并且是一个普通文件,有写的权限,那么文件内容清空O_APPEND:以追加方式打开文件,文件的都写位置被定位在文件的末尾。...:可变参数.可变参数的类型、个数取决于可变参数前边的那个参数。
返回值:
返回一个新的文件描述符
- 错误 errno被设置补充:文件描述符 小的 非负整数?
文件描述符是当前进程没有打开的、最小的文件描述符。进程 程序运行的实例。每个进程都有自己的pid。每个进程还有自己的户口本,专业术语称作PCB (process control block)PCB中记录了进程使用到的资源。(软件资源 硬件资源)
struct task{};
有一个成员记录了,这个进程打开的文件。进程默认从bash继承0 2三个文件描述符
标准输入 键盘 STDIN_FILENO
标准输出 显示器 STDOUT_FILENO
标准错误输出 显示器 STDERR_FILENO文件的类型
linux下一切皆文件。
-rw-rw-r-- tarena tarena 8月 : malloc.c- 普通文件
d 文件夹类型的文件
c 字符设备文件
b 块设备文件
s socket文件
p 管道文件
l 软链接文件权限的问题
rw-rw-r-- 文件的权限
linux是一款多用户多任务的操作系统
所谓的多用户就是多个用户可以同时登陆操作系统,在操作系统上维护自己的工作。老大 root
为每个用户指定了用户的地盘 用户工作主目录(家目录)~
把用户分成很多的组。一个用户可以属于多个组。一个用户组包含多个用户。r read
w write
x execute文件的拥有者 属主 u 属组 g
其他人 o
所有的用户 a改变文件的权限
chmod 权限 文件的名字
权限的构成
u+x
u-x
g-w
g+w可以使用数字表示权限。8进制的数据umask是什么玩意?
umask是权限掩码umask-------w-创建文件的时候,将掩码中出现在权限位去除。创建普通文件的时候。权限默认为是0666。
rw-rw-rw- 默认指定的权限 rw-rw-rw-
-------w- umask rwxrwxr-x
rw-rw-r-- 最终的权限 rw-rw-r--mode&~umask----wx-wx
rw-rw-rw-
rwxr--r--
rw-r--r--close()
#include <unistd.h>
int close(int fd);
功能:关闭一个文件描述符
参数:
fd:指定要关闭的文件描述符
返回值:
- 错误 errno被设置
成功举例说明
、以只读方式打开文件。代码参见r_file.c
注意:为了方便对文件的操作,将文件操作中使用的头文件进行封装。p_file.h、以读写方式打开文件,文件不存在,创建文件,权限指定为0644.文件存在,报错,文件已经存在。
代码参见 rw_file.c 、以读写方式打开文件,文件不存在创建文件,指定文件的权限为0664。文件存在,将文件内容清空
代码参见 rw1_file.cread()/write()
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
功能:从文件中读取数据
参数:
fd:指定了具体的文件,从这个文件里读取数据
buf:将读取的数据存放到buf指定的地址空间里
count:向系统申请的要读取的字节数
返回值:
返回的是实际读取到的字节数。0到达了文件的末尾。
- 错误 errno被设置#include <unistd.h>
ssize_t write(int fd,const void *buf,size_t count);
功能:向文件写数据
参数:
fd:指定了具体的文件
buf:指定了内容存放的地址
count:指定了写入文件的字节数
返回值:
- 错误 errno被设置
返回写入文件中的字节数举例说明 文件操作系统调用的使用 编写代码实现cat命令的功能。编译成可执行文件的名字为pcat
代码参见pcat.c总结:
一、malloc的实现原理 缓冲机制
二、文件的操作
open close read write三、使用mmap将文件映射到进程的虚拟地址,通过对内存里数据的修改,直接修改文件的内容。
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893