日期:2014-05-16 浏览次数:20843 次
#include <fcntl.h>
#include <stdio.h>
int main(){
//先试着打开一个不存在的文件
char* filepath = "/home/kent/temp/test-file-io.txt";
int fd = open(filepath, O_RDWR);
printf("The File Descriptor of an non-existing files is %d \n", fd);
if(fd == -1){
perror(filepath);
}
//创建文件
fd = open(filepath, O_CREAT|O_RDWR, 0777);
printf("The new created File Descriptor is %d \n", fd);
//当前偏移量
int pos = lseek(fd, 0, SEEK_CUR);
printf("On creation, the position is %d \n", pos);
//写文件
write(fd, "stop-talking-crazy", 12);
fsync(fd); //确保内容已写入磁盘
pos = lseek(fd, 0, SEEK_CUR);
printf("After writing, the position is %d \n", pos);
//读文件
char buf[100];
int n;
while((n = read(fd, buf, 10)) > 0){
;
}
printf("The first element of the Buffer after read is %d\n", buf[0]);
pos = lseek(fd, 0, SEEK_CUR);
printf("After reading, the position is %d \n", pos);
//应该从头开始读
char new_buf[100];
lseek(fd, 0, SEEK_SET);
while((n = read(fd, new_buf, 100)) > 0){
;
}
printf("The buffer read as %s \n", new_buf);
pos = lseek(fd, 0, SEEK_CUR);
printf("After reading from the beginning, the position is %d \n", pos);
//关闭文件
close(fd);
//删除文件
remove(filepath);
}