我有以下简单的程序:
#include <iostream>
#include <fcntl.h>
#include <unistd.h>
#include <string>
using namespace std;
int main() {
string data { "The quick brown fox jumps over the lazy dog" };
int file_descriptor = open("some_file.txt", O_CREAT | O_WRONLY);
write(file_descriptor, data.c_str(), data.size());
cout << file_descriptor << endl;
return 0;
}
在大多数情况下工作正常 - 数据被输出到文件中。但是根据http://linux.die.net/man/2/open,该O_CREAT
标志应该将文件所有者设置为进程的有效用户 ID。我正在从终端编译/运行我的应用程序,但没有任何权限,那么为什么创建的文件只对管理员可见?