大多数UNIX文件I/O操作只需用到5个函数:open、read、write、lseek、close,上述五个函数经常被称为不带缓存的I/O;不带缓存指的是每个read和write都调用内核中的一个系统调用;这些不带缓存的I/O函数不是ANSI C的组成部分,但是是POSIX.1和XPG3的组成部分。
下面我们来看看这些函数的应用,打开一个文件,读出1024字节,并输出内容。
1 #include <stdlib.h> 2 #include <stdio.h> 3 #include <fcntl.h> 4 #include <unistd.h> 5 int main(int argc, char* argv[]) 6 { 7 int fd, nbytes; 8 char buf[1025]; 9 10 if(argc < 2) 11 { 12 printf("Usage: %s filename\n", argv[0]); 13 exit(0); 14 } 15 if((fd = open(argv[1], O_RDONLY)) < 0) 16 { 17 printf("Error:open %s failed\n", argv[1]); 18 exit(0); 19 } 20 if((nbytes = read(fd, buf, sizeof(buf)) - 1) < 0) 21 { 22 printf("Error:read %s failed\n", argv[1]); 23 exit(0); 24 } 25 buf[1024] = 0; 26 printf("Read %d from %s\n", nbytes, argv[1]); 27 printf("%s\n",buf); 28 return 0; 29 }