属性>安全性,并授予其编辑、读取和写入权限(并应用于所有子文件/文件夹),c++,operating-system,chromium,permission-denied,ofstream,C++,Operating System,Chromium,Permission Denied,Ofstream" /> 属性>安全性,并授予其编辑、读取和写入权限(并应用于所有子文件/文件夹),c++,operating-system,chromium,permission-denied,ofstream,C++,Operating System,Chromium,Permission Denied,Ofstream" />

ofstream(C+;+;)未创建文件(权限被拒绝) 我正在挖掘一个开源项目(CR),它是用C++编写的,我想创建一个文件并写入它。顺便说一句,我使用忍者构建系统构建源代码。以下是我创建文件的代码: 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(); std::of stream myfile; 打开(“collectedData.txt”,std::fstream::out | std::fstream::app); 如果(myfile.is_open()){ 这确实是一个操作系统问题。。 如果您使用的是windows,请右键单击项目文件夹>属性>安全性,并授予其编辑、读取和写入权限(并应用于所有子文件/文件夹)

ofstream(C+;+;)未创建文件(权限被拒绝) 我正在挖掘一个开源项目(CR),它是用C++编写的,我想创建一个文件并写入它。顺便说一句,我使用忍者构建系统构建源代码。以下是我创建文件的代码: 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(); std::of stream myfile; 打开(“collectedData.txt”,std::fstream::out | std::fstream::app); 如果(myfile.is_open()){ 这确实是一个操作系统问题。。 如果您使用的是windows,请右键单击项目文件夹>属性>安全性,并授予其编辑、读取和写入权限(并应用于所有子文件/文件夹),c++,operating-system,chromium,permission-denied,ofstream,C++,Operating System,Chromium,Permission Denied,Ofstream,或者您的编译器可能存在安全问题(听起来更有可能)。几年前我遇到了完全相同的问题。。只需找到编译器的安装目录,然后执行与项目文件夹中提到的相同操作。目录权限和编译器问题都没有问题。问题是Chrome有几个渲染器进程,这些进程都是沙盒(与浏览器进程相反)。因此,他们没有写入文件的权限 要解决此问题,请使用--无沙盒标志为渲染器进程授予文件访问权限。构建chrome,然后使用以下代码从控制台运行它(用于win): 如果该文件已经存在并且由另一个进程打开,您将获得“权限被拒绝”状态。如果这是问题,此问题

或者您的编译器可能存在安全问题(听起来更有可能)。几年前我遇到了完全相同的问题。。只需找到编译器的安装目录,然后执行与项目文件夹中提到的相同操作。

目录权限和编译器问题都没有问题。问题是Chrome有几个渲染器进程,这些进程都是沙盒(与浏览器进程相反)。因此,他们没有写入文件的权限

要解决此问题,请使用
--无沙盒标志
为渲染器进程授予文件访问权限。构建chrome,然后使用以下代码从控制台运行它(用于win):


如果该文件已经存在并且由另一个进程打开,您将获得“权限被拒绝”状态。如果这是问题,此问题/答案可能会有所帮助:@Dale Wilson:我认为如果该文件不存在,至少代码应该创建该文件。您是否验证了该文件不存在?请尝试打开一个您知道存在于该目录中的文件您希望在何处创建文件以验证您的工作目录设置是否正确。@Dale Wilson:是的,我确信工作目录是正确的,并且文件不存在。您应该将该更新添加为此问题的答案。好的,谢谢您的反馈,我必须检查并返回结果。
chrome.exe --no-sandbox