系统调用和库函数调用
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,借鉴https://blog.csdn.net/lf_2016/article/details/54587020系统调用:用户直接调用操作系统暴露出来的接口,这种方式成为系统调用。文件I/O操作就是系
千家信息网最后更新 2024年11月18日系统调用和库函数调用
借鉴https://blog.csdn.net/lf_2016/article/details/54587020
系统调用:用户直接调用操作系统暴露出来的接口,这种方式成为系统调用。
文件I/O操作就是系统调用, man手册,man 2 就是查询系统调用API,
常用的API有open close read write lseek fcntl
库函数调用:对操作系统暴露出来的接口进行封装形成了库函数,提供给用户调用。
标准文件I/O操作就是库函数调用,man手册,man 3 就是查询库函数接口。
常见的标准库函数fopen fread fwrite
实际上库函数是对系统调用的一层封装,因此库函数对文件操作的时候,必然会引起系统调用。也就是说,库函数调用实际上是通过系统调用实现的。例如:C库函数fwrite就是通过write实现的。
库函数调用可以大大减少系统调用的次数,这是因为缓冲区技术。在用户空间和内核空间,对文件都使用了缓冲区,当内核缓冲区写满之后或写结束之后才将内核缓冲区内容写到文件对应的硬件媒介中。
#include#include #include int open(const char *pathname,int flags,int perms);flags:O_RDONLY O_WRONLY O_RDWR O_CREAT 若文件不存在,则创建一个新的文件,并用第三个参数为其设置权限。 O_TRUNC 若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0 O_APPEND 以添加方式打开文件返回值:成功返回文件描述 失败返回-1int fd;fd = open("test.txt",O_RDWR|O_CREAT|O_TRUNC);if(fd < 0){ perror("fail to open");}
#includeint close(int fd);返回值:成功返回0 失败返回-1
#includessize_t write(int fd,const void *buf,size_t count);功能:像文件描述符fd所指向的文件中写入,从buf开始的缓冲区中count个字节返回值:成功时返回写入的字节数(若为零则表示没有写入数据) 失败时返回-1,并设置errno为相应值。
#includessize_t read(int fd,void *buf,size_t count);功能:从文件描述符fd中读取count字节的数据并放入buf开始的缓冲区中。返回值:成功时返回读取到的字节数 失败时返回-1,并设置errno为相应值。
#include#include off_t lseek(int fd, off_t offset, int whence);/***offset:相对与基准点whence的偏移量,以字节为单位,正数表示向前移动,复数表示向后移动*whence:SEEK_SET 文件的起始位置 SEEK_CUR 文件当前读写位置 SEEK_END 文件的结束位置**/返回值:成功时,定位到文件当前读写位置 失败时,返回-1,并设置errno为相应值
#define OFFSET 10240int read_len;lseek(fd,-OFFSET,SET_END);while((read_len = read(fd,buf,sizeof(buf))) > 0) //读多少,写多少{ write(fdd,buf,read_len);}
文件
函数
系统
缓冲区
缓冲
成功
字节
就是
位置
内核
接口
数据
用户
操作系统
功能
实际
实际上
手册
方式
标准
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全专业主要的学习内容
数据库与内存映射
数据库技术与应用第四章
综合数据库文档怎么划分
怎么注册一个软件开发的公司
深泽网络安全检查
获取 服务器 时间
网络安全上市值
跨线程更新数据库
csmar金融数据库
超市数据库管理系统
计算机网络安全与防范问卷调查
张槎提花系统软件开发商
深信服网络安全笔试题
bsc数据库中收录的文献类型
北京工业控制软件开发
北京1u存储服务器机箱生产
燃烧远征服务器人口比例11月
学软件开发以后的就业前景
长春冉星软件开发有限公司董事长
用盗版的数据库
长沙值得去的网络安全公司
东南 大学 网络安全
蓝帕网络技术有限公司怎么样
数据库e-r图该怎么设计
数据库 源码
临夏邮政银行网络安全宣传
中憬科技集团软件开发
安卓vpn的服务器地址
怎么查看数据库在本机的IP