在 C++ 的标准库(或 linux sys/stat.h、sys/types.h、sys/.... 库)中有没有办法在使用 ofstream
创建文件时设置文件的文件权限(或使用来自那些图书馆)?
当我创建一个文件时,它只是使用一些默认的文件权限集创建(我假设当前的 umask
是什么),但我想明确地将权限设置为默认值以外的其他内容(例如 600
),我可以' t 只需在启动程序之前设置 umask(b/c 其他人将运行它)。
// Example of creating a file by writing to it
ofstream fp(filename.c_str())
/* write something to it */
有没有办法在 C++ 中做到这一点,或者如果没有,有没有办法在 C++ 程序中设置
umask
?例如,在 C 的标准库中,你 can just do :
open(filename, O_RDWR|O_CREAT, 0666)
但我不想诉诸于使用 C 函数,因为能够使用与
fstream
对象关联的函数会很好。(旁注:有一个 question 的标题正是我要找的,但结果却是无关的。)
最佳答案
你不能。标准库必须与平台无关,例如 0600
之类的权限在 Windows 上毫无意义。如果要使用特定于平台的功能,则需要使用特定于平台的 API。当然,您始终可以在打开文件之前调用 umask()
,但这不是 C++ 标准库的一部分,而是平台 API 的一部分。
注意:open()
也不属于 C 标准库。它是一个平台 API。用于打开文件的 C 标准库函数是 fopen()
。
关于c++ - 使用 ofstream 打开文件时设置文件权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33552166/