Linux操作系统向上提供了哪些系统调用?

Linux操作系统向上提供了众多系统调用,涵盖进程管理、文件系统、设备管理、网络通信等多个方面,以下是一些常见类别及对应的系统调用:

进程管理

  • fork:创建一个新进程,新进程是调用进程(父进程)的副本 ,子进程与父进程在执行流上各自独立,有各自的进程空间,但最初除了进程ID等少量信息外,大部分内容相同。常用于需要并行执行某些任务的场景,比如服务器端为每个客户端请求创建子进程来处理 。
  • execve:在当前进程的上下文中加载并执行一个新程序,用新程序替换当前进程的代码段、数据段等,通常与fork配合使用,先fork出子进程,然后子进程通过execve执行新程序 。
  • wait/waitpid:父进程调用该系统调用等待子进程终止,获取子进程的终止状态等信息 。wait会阻塞父进程直到任意一个子进程结束;waitpid可指定等待特定的子进程,并且可以设置非阻塞等选项 。

文件系统

  • open:打开或创建一个文件,返回一个文件描述符(非负整数)用于后续对文件的操作,可指定打开模式(读、写、读写等 )和文件权限等参数 。
  • read:从指定的文件描述符所对应的文件中读取数据到指定的缓冲区中,返回实际读取的字节数 。
  • write:将指定缓冲区中的数据写入到文件描述符对应的文件中,返回实际写入的字节数 。
  • close:关闭指定的文件描述符,释放与该文件描述符相关的系统资源 。
  • lseek:用于调整文件读写指针的位置,可设置相对于文件开头、当前位置或文件末尾的偏移量,方便在文件的不同位置进行读写操作 。

设备管理

  • ioctl:对设备进行各种控制操作,比如获取设备信息、设置设备参数等 。不同的设备有不同的控制命令,通过ioctl传递特定的命令和参数来实现对设备的定制化操作 。

网络通信

  • socket:创建一个网络套接字,指定协议族(如AF_INET表示IPv4 )、套接字类型(如SOCK_STREAM表示流套接字,基于TCP协议 ;SOCK_DGRAM表示数据报套接字,基于UDP协议 )等参数 。
  • bind:将套接字与特定的地址(如IP地址和端口号)绑定,使套接字能够在指定的地址上监听或进行通信 。
  • listen:将套接字设置为监听状态,用于监听客户端的连接请求,只适用于服务器端的流套接字 。
  • accept:在监听套接字上接受客户端的连接请求,返回一个新的套接字用于与该客户端进行通信 。
  • connect:客户端使用该系统调用连接到服务器端指定的地址和端口,建立网络连接 。

此外,还有信号相关(如kill用于向进程发送信号 )、内存管理(如mmap用于映射文件或内存区域 )等方面的系统调用。一个已安装系统支持的所有系统调用可在 /usr/include/bits/syscall.h 文件中查看 。

相关推荐
叼烟扛炮20 分钟前
Linux 学习笔记(五十六):IO 多路复用初探——select 的“三宗罪”
linux·服务器·数据库·笔记·学习·php
Ruiery42 分钟前
Linux 6.6内核内存管理深度解析(十五):CMA 连续内存分配器
linux·运维·服务器
xixingzhe21 小时前
AI 对话打字机效果:SSE 和 HTTP 的区别与适用场景
网络·网络协议·http
xiaoye-duck1 小时前
《C++ 项目:手写大模型接入 SDK》Gemini接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
测试界的小码农1 小时前
【Linux 命令实战(01):认识 Linux 终端,从零掌握第一个命令】
linux·运维·服务器
布裘2 小时前
【银河麒麟】重启后时区丢失?排查发现 localtime 被业务程序替换成硬链接
linux·运维·网络
zhikouai3 小时前
把外部助手接进聊天软件的架构分层与参数配置
服务器·网络·php
huainingning3 小时前
锐捷10.X路由器版本升级不生效问题排查
运维·网络·智能路由器
荣合技术服务3 小时前
HPC 超算集群故障维修实录:找荣合科算维护后,模拟仿真计算又能跑了
运维·服务器·超算服务器·荣合科算
GeW5 小时前
高端化转型进入“补底层”阶段:Linux与数据库的再定位
linux