小编JA_*_*FKH的帖子

ofstream (C++) 不创建文件(权限被拒绝)

我正在挖掘一个用 C++ 编写的开源项目(Chromium),我想创建一个文件并写入它。顺便说一句,我使用 Ninja 构建系统构建源代码。这是我创建文件的代码:

std::ofstream myfile;
myfile.open("collectedData.txt", std::fstream::out | std::fstream::app);
if (myfile.is_open()){
    std::cout << "file is open.\n";
    myfile << "Hello from Chrome!" ;
    myfile << "\n" ;
}else {
    std::cout << "error -> " << strerror(errno) << "\n";
    std::cout <<"file cannot be opened.\n";
}
myfile.close();
Run Code Online (Sandbox Code Playgroud)

所以问题是我得到了这个代码的权限被拒绝错误,它没有创建文件。但是,当我创建一个新项目(使用 VS2010)并将项目的 .exe 文件复制到 Chromium 的同一目录中时,代码会创建该文件。所以我认为目录权限没有问题。

另外,我查看了任务管理器,发现有几个Chrome.exe进程,所以我想可能是因为并发进程。然后我决定在关闭文件并运行并发进程(.exe)之前检查这个并将cin命令添加到上面的代码(到VS2010中的新项目)。这样,我不会关闭文件并打开它的多个实例。令人惊讶的是,所有程序都可以成功打开文件并写入文件。

我不知道要检查什么,我想知道是否有人可以帮助我。

更新: 我找到了问题,您可以在答案部分找到解决方案。

c++ operating-system ofstream permission-denied chromium

2
推荐指数
1
解决办法
2199
查看次数