如何在C中打开或创建具有权限的.out文件

  • 本文关键字:权限 文件 out 创建 file-io
  • 更新时间 :
  • 英文 :


我有问题,我想打开一个扩展名为.out的文件,或者如果它不存在,它应该创建一个具有读写权限的文件,通过打开文件,我想删除他的内容

variable = open( "file.out", O_RDWR | O_CREAT, S_IRWXO, O_TRUNC )

我使用了这个命令,但它总是失败。据我所知,我认为我有不好的标志:

O_RDWR是打开具有写和读权限的文件

O_CREAT如果不存在则创建文件

O_CREAT使用S_IRWXO使文件可读写

O_TRUNC擦除文件中的所有数据

open不接受4个参数,只接受2或3个。所有的O_标志都应该在第二个参数中进行OR运算。此外,S_IRWXO将只将权限授予其他人,而不授予所有者或组所有者。你的意思可能是S_IRWXU | S_IRWXG | S_IRWXO。但我宁愿看到一个八进制数字;宏的可读性不高。

variable = open( "file.out", O_RDWR | O_CREAT | O_TRUNC, 0777 )

如果您想要当前用户/所有者的读/写/执行权限,请使用:S_IRWXU:

S_IRWXO
Read, write, and search or execute permission for users other than the 
file owner. S_IRWXO is the bitwise inclusive-OR of S_IROTH, S_IWOTH, 
and S_IXOTH.
S_IRWXU
Read, write, and search, or execute, for the file owner; S_IRWXG is the
bitwise inclusive-OR of S_IRUSR, S_IWUSR, and S_IXUSR.

执行open( "file.out", O_RDWR | O_CREAT, S_IRWXU, O_TRUNC );ls -l会得到:

-rwx------. 1 perreal perreal 0 Apr 29 15:52 file.out

最新更新