首页 > 试题

open的用法

更新时间:2022-11-14 12:07:46 阅读: 评论:0

父母有困难只找女儿不找儿子-have过去分词


2022年11月14日发(作者:沙特阿拉伯足球队)

所需头文件:

#include

#include

#include

函数定义:

intopen(constchar*pathname,intflags);

intopen(constchar*pathname,intflags,mode_tmode);

函数说明:

参数pathname指向欲打开的文件路径字符串。下列是参数flags所能使用的旗标:

O_RDONLY以只读方式打开文件

O_WRONLY以只写方式打开文件

O_RDWR以可读写方式打开文件。

上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标利用OR(|)运算符组合。

O_CREAT若欲打开的文件不存在则自动建立该文件。

O_EXCL如果O_CREAT也被设置,此指令会去检查文件是否存在。文件若不存在则建立该文

件,

否则将导致打开文件错误。此外,若O_CREAT与O_EXCL同时设置,并且欲打开的文件为符号连

接,则会打开文件失败。

O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成进程控制终端机。

O_TRUNC若文件存在并且以可写的方式打开时,此旗标会令文件长度清为0,而原来存于该文件的资料

也会消失。

O_APPEND当读写文件时会从文件尾开始移动,也就是所写入的数据会以附加的方式加入到文件

后面。

O_NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取或等待,都会立即返回进程之中。

O_NDELAY同O_NONBLOCK。

O_SYNC以同步的方式打开文件。

O_NOFOLLOW如果参数pathname所指的文件为一符号连接,则会令打开文件失败。

O_DIRECTORY如果参数pathname所指的文件并非为一目录,则

会令打开文件失败。此为Linux2.2以后特有的旗标,以避免一些系

统安全问题。参数mode则有下列数种组合,只有在建立新文件时

才会生效,此外真正建文件时的权限会受到umask值所影响,因此

该文件权限应该为(mode-umaks).

S_IRWXU00700权限,代表该文件所有者具有可读、可写及可执行的权限。

S_IRUSR或S_IREAD,00400权限,代表该文件所有者具有可读取的权限。

S_IWUSR或S_IWRITE,00200权限,代表该文件所有者具有可写入的权限。

S_IXUSR或S_IEXEC,00100权限,代表该文件所有者具有可执行的权限。

S_IRWXG00070权限,代表该文件用户组具有可读、可写及可执行的权限。

S_IRGRP00040权限,代表该文件用户组具有可读的权限。

S_IWGRP00020权限,代表该文件用户组具有可写入的权限。

S_IXGRP00010权限,代表该文件用户组具有可执行的权限。

S_IRWXO00007权限,代表其他用户具有可读、可写及可执行的权限。

S_IROTH00004权限,代表其他用户具有可读的权限

S_IWOTH00002权限,代表其他用户具有可写入的权限。

S_IXOTH00001权限,代表其他用户具有可执行的权限。

返回值:

若所有欲核查的权限都通过了检查则返回0值,表示成功,只要有一个权限被禁止则返回-1。

错误代码:

EEXIST参数pathname所指的文件已存在,却使用了O_CREAT和O_EXCL旗标

EACCESS参数pathname所指的文件不符合所要求测试的权限。

EROFS欲测试写入权限的文件存在于只读文件系统内。

EFAULT参数pathname指针超出可存取内存空间。

EINVAL参数mode不正确。

ENAMETOOLONG参数pathname太长。

ENOTDIR参数pathname不是目录。

ENOMEM核心内存不足。

ELOOP参数pathname有过多符号连接问题。

EIOI/O存取错误。

#include

#include

#include

#include

#include

intmain(void)

{

intfd,size;

chars[]="Thisprogramisudtoshowhowtou

open(),write(),read()un!n";

charbuffer[80];

fd=open("",O_WRONLY|O_CREAT);//以可读写的方式打开一

个文件,如果不存在则创建该文件

if(-1==fd)

{

printf("Openorcreatefilenamed""failed.n");

return-1;

}

write(fd,s,sizeof(s));//向该文件中写入一个字符串

clo(fd);

fd=open("",O_RDONLY);

if(-1==fd)

{

printf("Openfilenamed""failed.n");

return-1;

}

size=read(fd,buffer,sizeof(buffer));//读取文件内容保存到

buffer指定的字符串数组中,返回读取的字符个数

clo(fd);

printf("%s",buffer);

return0;

}

本文发布于:2022-11-14 12:07:46,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/17328.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:瑞页念什么
下一篇:什么贡献
标签:open的用法
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图