【发布时间】:2020-12-26 04:11:53
【问题描述】:
我正在使用 open 系统调用以下列方式创建和打开文件:
fileID = open("aFile", O_CREAT|O_RDWR|O_TRUNC);
我希望创建具有读写权限的文件,有时确实如此,但只有当我运行ls -l 时,我只看到 w,或仅 r,或仅 x,或 ws,或 rwx 等. 如果我用系统调用运行我的程序 3 次,我每次可能会为 aFile 设置 3 个不同的文件权限。我不知道是什么导致了这个问题,因为它似乎是随机设置的。关于可能是什么原因的任何想法?
【问题讨论】:
-
您使用的是网络驱动器吗?还是本地驱动器?
-
您必须指定访问模式。
int open(const char *pathname, int flags, mode_t mode);"mode 参数指定创建新文件时应用的文件模式位。在标志中指定 O_CREAT 或 O_TMPFILE 时必须提供此参数;如果未指定 O_CREAT 或 O_TMPFILE,则忽略模式。"如果不指定模式,可能是随机值(未定义行为)。
标签: c linux filesystems system system-calls