pread和pwrite函数】的更多相关文章

先来介绍pread函数 [root@bogon mycode]# cat test.c #include<stdio.h> #include<stdlib.h> #include<unistd.h> #include<fcntl.h> char buf[20]; void testpread(int fd1) { int i; printf("use pread\n"); pread(fd1,buf,3,2);//起始位置为2,偏移量为3…
首先我想问的是这两个p代表的是什么? 系统调用pread和pwrite完成与read和write相类似的工作,只是前两者会在offset参数所指定的位置进行文件IO操作,而非始于文件的当前偏移量处,并且它们不会改变文件的当前偏移量. #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 cou…
http://stackoverflow.com/questions/7592822/what-are-the-advantages-of-pwrite-and-pread-over-fwrite-and-fread http://man7.org/linux/man-pages/man2/open.2.html…
Linux内核的VFS子系统: 文件描述符     对于内核而言,所有打开的文件都通过文件描述符引用.文件描述符是一个非负整数.当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符.当读或写一个文件时,使用open或creat返回的文件描述符标识该文件,将其作为参数传递给read或write.     按照惯例,UNIX系统shell使用文件描述符0与进程的标准输入相关联,文件描述符1与标准输出相关联,文件描述符2与标准出错相关联.这是各种shell以及很多应用程序使用的惯例,而与…
http://www.cnblogs.com/nufangrensheng/p/3498723.html中介绍了pread和pwrite函数,这些函数在多线程环境下是非常有帮助的,因为进程中的所有线程共享相同的文件描述符. 考虑两个线程,在同一时间对同一文件描述符进行读写操作. 线程A: lseek(fd, , SEEK_SET); read(fd, buf1, ); 线程B: lseek(fd, , SEEK_SET); read(fd, buf2, ); 如果线程A执行lseek,然后线程B…
一.添写至一个文件 考虑一个进程,它要将数据添加到一个文件尾端.早期的UNIX系统并不支持open的O_APPEND选项,所以程序被编写成下列形式: ) < ) /* position to EOF */ err_sys( "lseek error" ); ) != ) /* and write */ err_sys( "write error" ); 对单个进程而言,这段程序能正常工作,但若有多个进程同时使用这种方法将数据添加到同一文件,则会产生问题. 假定…
[UNIX环境高级编程]文件I/O大多数文件I/O只需要5个函数: open.read.write.lseek以及close 不带缓冲的I/O: 每个read和write都调用内核中的一个系统调用 1.文件描述符对于内核而言,所有打开的文件都通过文件描述符引用.当打开一个文件时,内核向进程返回一个文件描述符.当读或写一个文件时,使用open或create返回的文件描述符标识该文件,将其作为参数传给read或write. UNIX系统shell使用文件描述符0与进程的标准输入相关联,1与标准输出相…
文件I/O(2) 文件共享 内核使用三种数据结构表示打开的文件,他们之间的关系决定了在文件共享方面一个进程对还有一个进程可能产生的影响.如图1所看到的. 1)  每一个进程在进程表中都有一个记录项.记录项中包括一张打开文件描写叙述表,可将其视为一个矢量,每一个描写叙述符占用一项. 与每一个文件描写叙述符相关联的是: a)      文件描写叙述符标志 b)      指向一个文件表项的指针 2)  内核为全部打开文件维持一张文件表. 每一个文件表项包括: a)      文件状态标志(读.写.读…
引言: 本篇通过对open函数的讨论,引入原子操作,多进程通信(共享文件描述符)和内核相关的数据结构. 还会讨论集中常见的文件IO控制函数,包括: dup和dup2 sync,fsync和fdatasync fcntl ioctl /dev/fd 一.文件共享 这里所说的文件共享主要指的是进程间共享打开的文件. 这一节主要讨论文件在进程间共享的理论基础和数据结构,不涉及具体的技术实现,不同的系统可能会有不同的实现. 每一个打开的文件,涉及内核中的三种数据结构,这三种数据结构也是文件在进程间共享的…
3.1 引言 先说明可用的文件 I/O 函数:open.read.write.close,然后说明不同缓冲区长度对read和write函数的影响. 本章所说的函数经常被称为不带缓冲的 I/O (unbuffered I/O),与将在第5章中说明的标准 I/O相对照.术语不带缓冲指每个read和write都调用内核中的一个系统调用. 只要涉及在多个进程间共享资源,原子操作的概念就变得非常重要.我们将通过文件 I/O 和 open 函数的参数来讨论此概念.然后本章将进一步讨论在多个进程间如何共享文件…