我正在编写一个使用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;
}