aihot  2020-11-12 11:19:17  OpenCV |   查看评论   
static char *bufp=buf; static int n; if (n==0) { n=read(0,buf,BUFSIZ); bufp=buf; } return --n>0?(unsigned char)*(--bufp):EOF; }

8.3 open、cat、close和nulink

open和C函数库的fopen类似,只是前者返回的文件描述符,如果发生错误,则返回-1

#include<fcntl.h> int fd; int open(char *name,int flag,int perms); fd=open(name,flag,perm);

其中flag可以有的状态为O_RDONLY、O_WRONLY、O_RDWR分别代表,只读,只写,读写方式。

如果open打开一个不存在的文件,是将导致错误,可以使用creat系统调用创建新的文件或覆盖已有的旧文件,如下所示:

int creat(char *name, int perms); fd = creat(name,perms);

如果creat成功创建了文件,它将返回一个文件描述符,否则返回-1。如果此文件已存在,creat将把该文件的长度截断为0,从而丢弃原先已有的内容,使用creat创建一个已存在的文件不会导致错误。

perms用来指定权限,UNIX文件系统中每个文件对应一个9比特的权限信息,因此,通过一个3位的八进制数就可以方便地说明不同的权限。

函数close(int fd)用来断开文件描述符和已打开文件之间的连接,并释放此文件描述符,以供其他文件使用。

函数unlink(char* name)将文件name从文件系统中删除,它对应于标准库函数remove

8.4 随机访问——lseek

long lseek(int fd,long offset,int origin);

将文件描述符为fd的文件的当前位置设置为offset,其中,offset是相对于orgin指定的位置而言的,随后进行的操作从此位置开始。origin的值可以为0、1或2,分别用于指定offset从文件开始、从当前位置或从文件结束开始算起

lseek系统调用返回一个long类型的值,此值表示文件的新位置,若发生错误,则返回-1。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自《TCPL》 第8章 Unix系统接口

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]