接口名称 |
目的 |
---|---|
打开文件进行读取或写入 |
|
关闭文件描述符 |
|
从文件中读取 |
|
向文件中写入 |
|
创建新文件或重写现有文件 |
|
删除目录项 |
|
移动读/写文件指针 |
以下代码样例说明了基本文件 I/O 接口用法。read(2) 和 write(2) 都从文件当前偏移位置开始传送不超过指定数量的字节。返回实际传送的字节数。read(2) 返回零时指示已到达文件结尾。
#include <fcntl.h> #define MAXSIZE 256 main() { int fd; ssize_t n; char array[MAXSIZE]; fd = open ("/etc/motd", O_RDONLY); if (fd == -1) { perror ("open"); exit (1); } while ((n = read (fd, array, MAXSIZE)) > 0) if (write (1, array, n) != n) perror ("write"); if (n == -1) perror ("read"); close (fd); }
完成读取或写入文件后,应始终调用 close(2)。不要针对不是从调用 open(2) 返回的文件描述符调用 close(2)。
使用 read(2)、write(2),或者调用 lseek(2) 可以改变已打开文件的文件指针偏移。以下示例说明了 lseek 的用法。
off_t start, n; struct record rec; /* record current offset in start */ start = lseek (fd, 0L, SEEK_CUR); /* go back to start */ n = lseek (fd, -start, SEEK_SET); read (fd, &rec, sizeof (rec)); /* rewrite previous record */ n = lseek (fd, -sizeof (rec), SEEK_CUR); write (fd, (char *&rec, sizeof (rec));