我正在挖掘一个用 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中的新项目)。这样,我不会关闭文件并打开它的多个实例。令人惊讶的是,所有程序都可以成功打开文件并写入文件。
我不知道要检查什么,我想知道是否有人可以帮助我。
更新: 我找到了问题,您可以在答案部分找到解决方案。