当前位置: 首页 > news >正文

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

文章目录

  • 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.lryc.cn/news/383657.html

相关文章:

  • rk3568 Android 11在系统怎样执行命令获取SN号
  • PostgreSQL 性能优化与调优(六)
  • win10 安装openssl并使用openssl创建自签名证书
  • 【OpenCV 图像处理 Python版】图像处理的基本操作
  • HarmonyOS应用开发学习经验
  • LLM大语言模型应用方案之RAG检索增强生成的实现步骤。
  • 【python学习】学习python的小项目
  • java-冒泡排序 1
  • 【STM32】USART串口通讯
  • Qt6中如何将QList转为QSet?
  • aspectj:AOP编程备忘录-切面定义的注意事项
  • 大数据面试题之Hive(1)
  • 【Git】分布式版本控制工具
  • 排序之插入排序----直接插入排序和希尔排序(1)
  • 快速创建条形热力图
  • go switch 与 interface
  • BaseMapper 接口介绍
  • HAL-Cubemax定时器使用记录
  • 同时使用磁吸充电器和Lightning时,iPhone充电速度会变快吗?
  • 零成本搭建个人图床服务器
  • SpringBoot 搭建sftp服务 实现远程上传和下载文件
  • IDEA中使用leetcode 刷题
  • 华为海思CPU解读
  • 中介子方程三十三
  • 今年哪两个行业可能有贝塔?
  • 嵌入式软件开发工具使用介绍
  • 【TB作品】MSP430G2553,单片机,口袋板, 交通灯控制系统
  • windows 安装 Kubernetes(k8s)
  • C语言 | Leetcode C语言题解之第189题轮转数组
  • 【安全审核】音视频审核开通以及计费相关