Linux高并发服务器开发(二)系统调用函数

server/2024/9/23 5:19:56/

文章目录

  • 1 系统调用
  • 2 errno
  • 3 虚拟内存空间
  • 4 文件描述符
  • 5 常用文件IO函数
  • 6 阻塞和非阻塞
  • 7 lseek 偏移函数
  • 8 文件操作函数之stat函数
  • 9 文件描述符复制 dup
  • 10 fcnlt函数 修改文件属性
  • 11 目录相关操作
  • 12 时间相关函数


1 系统调用

根据系统调用,获取驱动信息、CPU的信息等。内核提供给用户获得内核信息的接口。

用户态和内核态
在这里插入图片描述

用户态:不能随意访问内存、不能开闭中断以及切换运行的特权级别。
内核态:可以毫无限制的访问各种资源。
操作系统通过软件中断从用户态到达内核态

系统调用和库函数调用
在这里插入图片描述
在这里插入图片描述
设置缓冲区,减少io系统调用的次数,提高访问效率
a

2 errno

在这里插入图片描述

errno.h
errno 是一个全局变量,在errno.h 中定义
如果出错,会替换这个值,并报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3 虚拟内存空间

在这里插入图片描述
静态变量放 全局变量区(全局变量、静态变量)
堆空间 程序员自己分配自己释放
共享区:存储映射区,C标准库和linux系统io函数
栈空间:存放局部变量
环境变量:存放环境变量
只读数据段:字符串常量

可执行文件放在内存里,即虚拟地址空间中执行
应用程序根据虚拟地址访问内存时,CPU会将其转换为物理地址(MMU)

4 文件描述符

打开文件后,返回一个文件描述符

在这里插入图片描述
在这里插入图片描述

5 常用文件IO函数

Open函数, 返回文件描述符
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
Close 函数 :关闭一打开的文件,释放资源,刷新缓存区

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
write函数 把指定树木的数据邪道文件
在这里插入图片描述

在这里插入图片描述
read函数
在这里插入图片描述
在这里插入图片描述

6 阻塞和非阻塞

在这里插入图片描述

7 lseek 偏移函数

在这里插入图片描述
偏倚指针

8 文件操作函数之stat函数

在这里插入图片描述

在这里插入图片描述

stat中拥有的信息
在这里插入图片描述
在这里插入图片描述

获取文件类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
获取文件权限

在这里插入图片描述
做与操作
在这里插入图片描述

其他操作函数
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9 文件描述符复制 dup

在这里插入图片描述

进程表项 v节点指针指向v节点表,然后找到在磁盘中的位置
在这里插入图片描述
复制后,比如fd1 和fd3,都指向同一个文件表,找到同一个文件
在这里插入图片描述
在这里插入图片描述

dup就是相当于配了一把新钥匙,但锁还是只有一个,即共享一个文件表
在这里插入图片描述

在这里插入图片描述

10 fcnlt函数 修改文件属性

在这里插入图片描述

对文件描述符进行复制

在这里插入图片描述
修改文件状态
只能改变一部分,不能改变是否只读只写
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

11 目录相关操作

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

12 时间相关函数

在这里插入图片描述


http://www.ppmy.cn/server/53520.html

相关文章

【nginx】nginx怎么让出问题的代理服务器优雅地退出

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

React 18

React Redux Router路由 TS 安装插件 React Developer、Redux DevTools、极简插件; babel classnames库 dayjs 1 React 组件化开发方式、性能优秀(vnode、fiber)、丰富生态、跨平台支持(React native支持ios、安卓&#xff0…

label studio数据标注平台的自动化标注使用

(作者:陈玓玏) 开源项目,欢迎star哦,https://github.com/tencentmusic/cube-studio 做图文音项目过程中,我们通常会需要进行数据标注。label studio是一个比较好上手的标注平台,可以直接搜…

淘客返利平台的API设计与安全

淘客返利平台的API设计与安全 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 在构建淘客返利平台时,API设计和安全是两个至关重要的方面。API设计…

最长考拉兹序列

题目: 考虑如下定义在正整数集上的迭代规则: n n/2 (若n为偶数) n 3n1 (若n为奇数) 从13开始,可以迭代生成如下的序列: 13 40 20 10 5 16 8 4 2 1 可以看出这个序列(从13…

RAG | (ACL24规划-检索增强)PlanRAG:一种用于生成大型语言模型作为决策者的规划检索增强生成方法

原文:PlanRAG: A Plan-then-Retrieval Augmented Generation for Generative Large Language Models as Decision Makers 地址:https://arxiv.org/abs/2406.12430 代码:https://github.com/myeon9h/PlanRAG 出版:ACL 24 机构: 韩国…

QT/QML国际化:中英文界面切换显示(cmake方式使用)

目录 前言 实现步骤 1. 准备翻译文件 2. 翻译字符串 3.设置应用程序语言 cmake 构建方式 示例代码 总结 1. 使用 file(GLOB ...) 2. 引入其他资源文件 再次生成翻译文件 5. 手动更新和生成.qm文件 其他资源 前言 在当今全球化的软件开发环境中,应用程…

金榜题名升学宴,怀庄之醉鸿运添彩

十年寒窗苦读,终于迎来金榜题名的辉煌时刻。这是对知识的向往与追求,也是对未来的期许与梦想。在这样一个值得纪念的时刻,举办一场升学宴,无疑是对过去努力的最好告别,也是对未来人生新旅程的美好祝愿。在选择升学宴用…