unix环境编程学习-chapter3IO读写操作-创新互联-成都快上网建站

unix环境编程学习-chapter3IO读写操作-创新互联

原子操作pread,pwirte

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:国际域名空间、虚拟主机、营销软件、网站建设、昭通网站维护、网站推广。

#include

ssize_t pread(int fd, void *buf, size_t nbytes, off_t offset);//返回值:读到的字节数,若已到文件结尾则返回0,若出错返回-1

ssize_t pwrite(int fd,const void *buf ,size_t nbytes, off_t offset);//返回值:若成功返回已写的字节数,若出错返因-1

pread,pwirte,相当于顺序调用lseek和read或write,但调用pread,pwrite时无法中断其定位和读写操作,并且不能更新文件指针。

od -c file:查看file的实际内容

文件共享:

文件描述符:每个进程在进程表中都有一个记录项每个记录项中有一张打开的文件描述符表(所以才有必要复制文件描述符),每个文件描述符表项关联:(a)文件描述符标志。(b)指向一个文件表项的指针。

文件表:内核为所有打开的文件维护一张文件表,每个文件表项包含:(a)文件状态标志(读、写、增写、同步、非阻塞等)。(b)当前文件的偏移量。(c)指向该文件v节点表项的指针。

    v节点:每个打开的文件(或设备)都有一个v节点结构。包含了文件类型和对此文件进行各种操作的函数的指针信息。对于大多数文件,v节点还包含了该文件的i节点(索引节点)。这些信息是在打开文件时从盘上读入内存的,所以所有关于文件的信息都是快速可供使用的。例如,i节点包含了文件的所有者、文件长度、文件所在的设备、指向文件在盘上所使用的实际数据块的指针等等。

fcntl函数可以改变已经打开文件的性质。

   int fcntl(int filedes, int cmd ,....);

cmd:

 F_DUPFD 复制一个现存的文件描述符。

 F_GETFD or F_SETFD 获得/设置文件描述符标志

 F_GETFL or F_SETFL 获得/设置文件状态标志 即open函数中mode的几种状态

 F_GETOWN or F_SETOWN 获得/设置异步I/0权限

 F_GETLK,F_SETLK or F_SETLKW 获得/设置记录锁

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文题目:unix环境编程学习-chapter3IO读写操作-创新互联
文章分享:http://kswjz.com/article/csgsjc.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流