“简述: pread/pwrite 接口
参考: http://blog.chinaunix.net/uid-28852942-id-3652277.html
我们创建了一个文件test 内容为“123456789”
- 程序先先练两次调用read(),每次读取三个字节
- 程序先调用pread()在离文件头五个字节出读3数据,然后在调用
read()读取三个字节。
a程序为:
fd=open("test",O_RDONLY);
read(fd,buf,3);
buf[3]='\0';
printf("%s\n",buf);
read(fd,buf,3);
buf[3]='\0';
printf("%s\n",buf);
输出为:
123
456
b程序为:
fd=open("test",O_RDONLY);
pread(fd,buf,3,5);
buf[3]='\0';
printf("%s\n",buf);
read(fd,buf,3);
buf[3]='\0';
printf("%s\n",buf);
输出为:
678
123
结论:
从输出我们可以很清楚的看出。pread()调用并不会改变文件指针。
pread/pwrite 不会改变当前文件的偏移量,是原子操作.