一、介绍
- 系统调用pread()和pwrite() 完成与read()和write类似的工作,只不过前2个会指定offset参数所指定的位置进行文件I/O操作,而非始于文件的当前偏移量处,并且不会改变文件的当前偏移量。由于进程下的所有线程将共享同一个文件描述表,所以在多线程调用pread,pwrite 可以不影响其他线程修改文件偏移量。这么一说如果看了前面的文件空洞文章的同学,那么我们是不是就可以用这些函数简单实现多线程的迅雷下载呢!
#include <unistd.h>
ssize_t pread(int fd, void *buf, size_t count, off_t offset);
ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset);
- pread,pwrite都是原子操作,避免