gpt4 book ai didi

c++ - 当程序使用 sudo 运行时,ofstream 无法创建文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:52:32 24 4
gpt4 key购买 nike

我正在编写一个使用 libusb 的应用程序,并且我正在研究涉及将设备数据写入 XML 文件的部分。

我意识到该程序可能需要使用 sudo 运行,因为当我尝试传输到没有足够权限的设备时。但是,当我使用 sudo 运行程序时,ofstream 将不再创建该文件。这是为什么,我该如何解决它?

int writeDeviceList(const char* fileName, libusb_device **devs, ssize_t deviceCount)
{
std::ofstream file;
file.open(fileName, std::ios::trunc);

if(!file)
{
//Code enters here when run with root
std::cout << "\"" << fileName << "\" file failed to open\n";
return -1;
}

file << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
file << "<USB>\n";

ssize_t i;
for(i = 0; i < deviceCount; i++)
{
if(printdev(devs[i], &file) == -1)
{
return -1;
}
}
file << "</USB>\n";
file.close();
return 0;
}

最佳答案

一个原因是,如果您是运行的本地计算机上的 root 用户,但该文件位于远程计算机的 nfs 挂载上,例如您普通用户的主目录。那么本地机器上的 root 将无法写入甚至打开该文件。

关于c++ - 当程序使用 sudo 运行时,ofstream 无法创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25804532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com