### Linux 有哪些系统调用 **1. 进程管理相关系统调用** 这些调用用于创建、销毁和管理进程 - `fork()`: 创建一个子进程,它是父进程的精确副本 - `execve()`: 在当前进程中加载并执行一个新程序 - `wait4()`: 暂停当前进程,等待子进程退出或停止 - `exit()`: 终止当前进程并返回一个状态码。 - `getpid()`: 获取当前进程的 ID。 **2. 文件和设备管理相关系统调用** 这些调用是应用程序与文件系统交互的核心,包括文件的创建、读写和权限管理 - `open()`: 打开或创建一个文件,返回一个文件描述符 - `read()`: 从文件描述符中读取数据 - `write()`: 向文件描述符中写入数据 - `close()`: 关闭一个文件描述符 - `lseek()`: 移动文件读写指针的位置 - `stat()`: 获取文件的状态信息,例如大小、权限和创建时间 - `unlink()`: 删除一个文件 - `ioctl()`: 用于设备特有的 I/O 操作 **3. 信息维护相关系统调用** 这些调用用于获取或设置系统信息,如时间、用户信息和系统配置 - `gettimeofday()`: 获取当前时间和时区信息 - `uname()`: 获取操作系统的名称和版本信息 - `getuid()`: 获取当前用户的有效 ID - `getgid()`: 获取当前用户的有效组 ID **4. 通信相关系统调用** 这些调用主要用于进程间通信(IPC)和网络通信 - `pipe()`: 创建一个匿名管道,用于父子进程间的通信 - `socket()`: 创建一个网络套接字 - `connect()`: 连接到远程主机 - `bind()`: 将套接字绑定到一个地址和端口 - `listen()`: 监听来自客户端的连接请求 - `accept()`: 接受一个客户端的连接 **5. 内存管理相关系统调用** 这些调用用于分配、释放和管理进程的内存 - `brk()`: 改变数据段的结束地址 - `mmap()`: 创建一个内存映射,用于在文件中或设备中进行内存操作 - `munmap()`: 撤销 `mmap()` 创建的内存映射