
所需头文件在编写相关代码时请确保包含以下头文件#include sys/types.h // 提供基本数据类型定义如 off_t, mode_t 等 #include sys/stat.h // 提供文件属性及 open() 函数的 mode 参数宏定义 #include fcntl.h // 提供 open() 函数的 flags 参数宏定义及 fcntl() #include unistd.h // 提供 POSIX 标准系统调用如 read, write, lseek, dup 等1. open(const char *pathname, int flags, mode_t mode)open作用打开或创建一个文件将路径名转换为一个文件描述符非负小整数用于后续的read、write等I/O操作。参数含义与用法pathname要打开或创建的文件路径名。flags通过按位或|组合的标志指定文件的访问模式和可选模式。访问模式O_RDONLY只读、O_WRONLY只写、O_RDWR读写。可选模式O_CREAT文件不存在则创建、O_TRUNC若文件存在且可写则清空文件内容、O_APPEND以追加模式打开每次写入前光标移至文件末尾、O_NONBLOCK非阻塞模式打开。mode仅在flags包含O_CREAT时有效。用于指定新创建文件的初始权限如0644, 0666等。返回值成功返回当前进程中最小的未使用文件描述符。失败返回 -1并设置errno以指示错误类型。代码展示2. write(int fd, const void *buf, size_t count)write作用将数据从用户缓冲区写入到指定的文件描述符中适用于普通文件、管道、套接字等。参数含义与用法fd文件描述符表示数据写入的目标。buf指向包含待写入数据的缓冲区的指针。count期望写入的字节数。返回值成功返回实际写入的字节数可能小于count例如磁盘已满或向管道/套接字写入时。失败返回 -1并设置errno。3. read(int fd, void *buf, size_t count)read作用从指定的文件描述符中读取数据并将其存入用户提供的缓冲区中。参数含义与用法fd文件描述符表示读取数据的来源。buf指向用户分配缓冲区的指针用于存储读取的数据。count期望读取的最大字节数。返回值成功返回实际读取到的字节数。若返回0表示已到达文件末尾EOF。失败返回 -1并设置errno。代码展示 4. freopen(const char *filename, const char *mode, FILE *stream)freopen作用C标准库函数用于关闭当前与流关联的文件并将该流重新分配重定向到指定的新文件。常用于重定向标准输入/输出流。参数含义与用法filename要重定向到的目标文件名或路径。mode文件的访问模式字符串如r只读、w只写、a追加。stream需要被重定向的标准流指针如stdin、stdout、stderr。返回值成功返回指向新打开流的FILE *指针即传入的stream。失败返回NULL并设置errno。代码展示注/dev/tty表示的是终端5. fcntl(int fd, int cmd, ... /* arg */)fcntl作用对已打开的文件描述符进行多种控制操作具体行为由cmd参数决定。参数含义与用法fd要操作的文件描述符。cmd要执行的命令。常用命令包括F_GETFL获取文件状态标志如O_NONBLOCK无需第三个参数。F_SETFL设置文件状态标志需要第三个参数新的标志值。...可选参数取决于cmd的值。返回值返回值取决于cmd。例如F_GETFL成功时返回当前的标志位F_SETFL成功时返回0失败时均返回 -1 并设置errno。代码展示6. dup(int oldfd)dup作用复制一个现有的文件描述符返回一个新的文件描述符两者指向同一个文件表项。参数含义与用法oldfd需要被复制的源文件描述符。返回值成功返回当前进程中最小的未使用文件描述符。新旧描述符共享读写指针、文件状态标志和锁定等。失败返回 -1并设置errno。代码展示7. dup2(int oldfd, int newfd)dup2作用复制文件描述符并将结果精确绑定到用户指定的目标文件描述符上常用于实现I/O重定向。参数含义与用法oldfd需要被复制的源文件描述符。newfd指定的目标文件描述符。如果newfd已经打开系统会先自动关闭它如果newfd oldfd则直接返回newfd不做任何操作。返回值成功返回目标文件描述符newfd。失败返回 -1并设置errno如oldfd无效时newfd不会被关闭。代码展示8. lseek(int fildes, off_t offset, int whence)lseek作用移动已打开文件的读写位置文件指针以便后续的read/write操作从新位置开始。参数含义与用法fildes已打开的文件描述符。offset相对于基准位置的偏移字节数。whence基准位置常用宏定义包括SEEK_SET从文件开头计算。SEEK_CUR从当前读写位置计算。SEEK_END从文件末尾计算。返回值成功返回移动后距离文件开头的字节偏移量。失败返回 -1并设置errno如对不可定位的设备如tty进行lseek操作会返回ESPIPE。代码展示