libusb를 사용하는 응용 프로그램을 작성 중이며 장치의 데이터를 XML 파일에 기록하는 작업을하고 있습니다.ofstream이 프로그램이 sudo로 실행될 때 파일을 생성하지 못했습니다.
나는 장치에 전송하려고 할 때 충분한 권한이 없었기 때문에 프로그램을 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;
}
['std :: perror()'] (http://en.cppreference.com/w/cpp/io/c/perror)를 선택했다고 가정하지 않습니까? – WhozCraig
perror returned "Permission denied"@WhozCraig – Yann