文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>函数open

函数open

时间:2010-12-06  来源:xixidechengbao


int open(const char *pathname, int flags, ...);


[advanced programming in the unix environment]P.48 关于函数第二个参数对O_CREAT和O_EXCL的描述很有歧义
O_CREAT是说如果文件不存在就创建之 第三个参数mode指定访问权限 如0644(八进制) 如果文件存在就直接打开(第三个参数变成修改权限? 还是直接忽略了?)
一开始以为 O_EXCL必须和O_CREAT一起使用 否则没有作用 实际上O_EXCL本身就是用来测试文件是否存在的 如果文件不存在 则返回出错-1 文件存在则没反应 而当使用O_CREAT|O_EXCL的话则是相反的 如果文件不存在就创建文件 文件存在则返回出错
真是神奇的O_EXCL啊...

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    int open_description = 0;
    if ((open_description = open("./testfile", O_RDWR|O_CREAT|O_EXCL, 0644))!=-1)
    {
        printf("open successful!\n");
        close(open_description);
    }
    else
        printf("open error!\n");
    return 0;
}


第一次运行程序 创建文件 第二次运行 则返回error 如果if语句里改为O_RDWR|O_EXCL 则第一次就返回error
PS. 看书的心情   被一系列的事情打断 就不记得上次看书时 是什么心情了
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载