在 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/

10-11 23:20
查看更多