首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

《UNIX环境高级编程》札记-read函数,write函数,lseek函数

2013-09-10 
《UNIX环境高级编程》笔记--read函数,write函数,lseek函数1.read函数调用read函数从文件去读数据,函数定义如

《UNIX环境高级编程》笔记--read函数,write函数,lseek函数
1.read函数调用read函数从文件去读数据,函数定义如下:

#include <fcntl.h>#include <stdio.h>int main(void){        int fd,byteNum,result;        char wbuf[10] = "123456789";        char rbuf[10];        if((fd = open("./a.txt", O_RDWR|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR))<0){                perror("open");                return -1;        }        if((byteNum = write(fd, wbuf, 10))<0){                perror("write");                return -1;        }        if((result = lseek(fd, 40960, SEEK_END))<0){                perror("lseek");                return -1;        }        if((byteNum = write(fd, wbuf, 10)) < 0){                perror("write");                return -1;        }        close(fd);        return 0;}
运行结果:-rw------- 1 root root 40980 2013-09-09 15:03 a.txt使用od命令查看文件内容:root@virtual-machine:~# od -c a.txt
0000000   1   2   3   4   5   6   7   8   9  \0  \0  \0  \0  \0  \0  \0
0000020  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
0120000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0   1   2   3   4   5   6
0120020   7   8   9  \0
0120024空洞的内容全部置为0
查看下文件占用的磁盘大小:8 -rw------- 1 root root 40980 2013-09-09 15:41 a.txt
文件虽然有40980个字节,只占用了8个block,即8K(这边的block不是文件系统的block,而是kernel block,linux中,kernel block大小为1K),如果是没有空洞的文件,则占用磁盘大小应该是44K。可见,虽然有空洞,但是实际存储时没有占用文件大小的磁盘空间。

热点排行