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 文件中查看 。

相关推荐
青梅橘子皮3 小时前
Linux---基本指令
linux·运维·服务器
REDcker4 小时前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng5 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟5 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记5 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday6 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256736 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
Empty-Filled7 小时前
AI生成测试用例功能怎么测:一个完整实战案例
网络·人工智能·测试用例
峥无8 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801688 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux