### 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()` 创建的内存映射