socketpair系统调用及示例

好的,我们继续按照您的列表顺序,介绍下一个函数socketpair 是一个 Linux 系统调用,用于创建一对相互连接的匿名套接字。这对套接字就像一个双向的管道(bidirectional pipe),允许两个进程(通常是具有亲缘关系的进程,如父子进程或线程)通过套接字语义进行双向(全双工)通信。 1. 函数介绍 socketpair 是一个 Linux 系统调用,用于创建一对相互连接的匿名套接字。这对套接字就像一个双向的管道(bidirectional pipe),允许两个进程(通常是具有亲缘关系的进程,如父子进程或线程)通过套接字语义进行双向(全双工)通信。 你可以把它想象成一对连在一

Read More

socket系统调用及示例

我们继续学习 Linux 系统编程中的重要函数。这次我们介绍 socket 函数,它是网络编程的基础,用于创建一个套接字 (socket),这是进程间通过网络进行通信的端点。 1. 函数介绍 socket 是一个 Linux 系统调用,用于创建一个新的**套接字 **(socket)。套接字是一种抽象的概念,它是网络通信的基础端点。你可以把套接字想象成电话的听筒: * 你需要先有一个听筒(调用 socket 创建)。 * 然后你可以用它来拨打电话(connect,作为客户端)或接听电话(bind + listen + accept,作为服务器)。 *

Read More

splice系统调用及示例

splice 函数详解 1. 函数介绍 splice 是Linux系统调用,用于在两个文件描述符之间高效地移动数据,而无需将数据复制到用户空间。它是Linux特有的零拷贝I/O操作,特别适用于管道、套接字和文件之间的数据传输,能够显著提高I/O性能。 2. 函数原型 1 2 3 4 5 6 7 #define _GNU_SOURCE #include #include ssize_t splice(int fd_in, loff_t *off_in, int fd_out, loff_t *off_out,

Read More

statfs系统调用及示例

好的,我们来深入学习 statfs 系统调用 1. 函数介绍 在 Linux 系统中,文件和目录都存储在各种各样的文件系统之上,比如你系统盘常用的 ext4,或者 U 盘上的 vfat (FAT32)。每个文件系统都有自己的特性,比如总容量多大、现在用了多少、还剩多少空间、文件名最长支持多少个字符等等。 statfs (Stat File System) 系统调用的作用就是查询指定路径所在文件系统的各种统计信息和属性。 你可以把它想象成一个“文件系统信息查询器”。你随便给它一个路径(比如 /home, /tmp, /mnt/my_usb),它就能告诉你这个路径所在的那个磁盘分区(文件系统

Read More

statvfs-statfs系统调用及示例

我们来深入学习 statfs 和 statvfs 这两个系统调用。这两个函数功能非常相似,主要区别在于标准化和可移植性。 1. 函数介绍 在 Linux 系统中,文件和目录都存储在各种各样的文件系统之上(如 ext4, XFS, Btrfs, tmpfs 等)。每个文件系统都有自己的特性,比如总容量多大、现在用了多少、还剩多少空间、支持的文件名最长多少字符等等。 statfs 和 statvfs 系统调用的作用就是查询指定路径所在文件系统的各种统计信息和属性。 你可以把它们想象成“文件系统信息查询器”。你随便给它一个路径(比如 /home, /tmp, /mnt/my_usb),它就能告

Read More

statx系统调用及示例

好的,我们继续按照您的要求学习 Linux 系统编程中的重要函数。这次我们介绍 statx。 1. 函数介绍 statx 是一个相对较新的 Linux 系统调用(内核版本 >= 4.11),它是对传统 stat, lstat, fstat 系列函数的现代化扩展和增强。 它的主要功能是获取文件的状态信息(如大小、权限、所有者、时间戳等),与 stat 系列函数相同。但 statx 提供了以下显著优势: 更高效: 通过 flags 参数,调用者可以精确指定需要查询哪些文件属性,内核只返回请求的信息,避免了获取不必要的数据,从而提高了效率。 更丰富的信息: statx 可以返回一些传统 st

Read More

stat系统调用及示例

好的,我们继续学习 Linux 系统编程中的重要函数。这次我们介绍一组用于获取文件状态信息的函数:stat, fstat, 和 lstat。它们让你能够查询文件的各种属性,如大小、权限、所有者、时间戳等,而无需打开文件(stat, lstat)或只需已打开的文件描述符(fstat)。 1. 函数介绍 stat, fstat, 和 lstat 是三个密切相关的 Linux 系统调用,它们都用于获取文件的状态信息。这些信息被填充到一个 struct stat 类型的结构体中。 * stat: 通过文件路径名 (pathname) 获取文件状态。如果路径名指向一个符号链接 (symbolic

Read More

swapon-off系统调用及示例

swapon/swapoff 函数详解 1. 函数介绍 swapon 和 swapoff 是Linux系统调用,用于管理系统的交换空间(swap space)。交换空间是磁盘上的一块区域,当物理内存不足时,系统会将不常用的内存页移动到交换空间,从而释放物理内存供其他进程使用。 2. 函数原型 1 2 3 4 5 #include int swapon(const char *path, int swapflags); int swapoff(const char *path); 3. 功能 * swapon: 启用指定的交换空间(文件或设备

Read More

symlink-symlinkat系统调用及示例

好的,我们来深入学习 symlink 和 symlinkat 系统调用 1. 函数介绍 在 Linux 文件系统中,一个文件可以有多个名字,这通过链接 (Link) 来实现。链接主要分为两种: 硬链接 (Hard Link): 由 link() 和 linkat() 创建。多个硬链接直接指向同一个 inode(文件的实际数据)。删除一个硬链接不会影响文件数据,只有当所有硬链接都被删除时,文件数据才会被真正删除。硬链接不能跨文件系统,也不能指向目录(除了 . 和 ..)。 符号链接 (Symbolic Link, Symlink): 由 symlink() 和 symlinkat() 创建

Read More

sync/syncfs系统调用及示例

好的,我们来深入学习 sync 和 syncfs 系统调用 1. 函数介绍 在 Linux 系统中,为了提高文件操作的性能,内核广泛使用了缓存 (Caching) 机制。当你调用 write() 将数据写入文件时,数据通常首先被写入到内存中的高速缓存(页缓存 Page Cache)中,而不是直接写入物理磁盘。操作系统会在稍后(例如缓存满、定时刷新或系统关闭时)才将这些缓存中的“脏数据”(已修改但未写回磁盘的数据)真正写入到磁盘上。 这种机制虽然高效,但也带来了数据安全的风险:如果在数据从缓存写入磁盘之前,系统突然断电或崩溃,那么这部分未写入的数据就会丢失。 sync 和 syncfs 系

Read More