Я пытаюсь написать программу для ведения журнала для приложения.Это должно записывать журналы в /tpm/app-name/log.txt
.Чтобы сделать это, мне нужно сделать каталог app-name
перед записью, на случай, если он не существует.Однако мой код не создаст каталог, даже если он работает с правильными разрешениями для этого.
Я пытался: * использовать chdir
для перехода на /tmp
и создать каталог app-name
потом * запуск программы с правами root (это менее чем желательно и выдает ошибку кода из-за того, что строка 65 не имеет доступа к текущей среде, в которой работает остальная часть системы).
Я бы хотелэта программа сможет работать из любой точки системы.
Мой текущий код на C ++:
#include <iostream>
#include <string>
#include <cstdlib>
#include <fstream>
#include <bits/stdc++.h>
#include <sys/stat.h>
#include <sys/types.h>
using namespace std;
int main(int argc, char* argv[])
{
string name = argv[1];
string DIR = "/tmp/" + name;
string LOG_LOCATION = DIR + "/log.txt";
int len = DIR.length();
char LOG_DIR[len + 1];
strcpy(LOG_DIR, DIR.c_str());
string OUTPUT_LOG = "Some error log text";
ofstream log;
cout << OUTPUT_LOG << endl;
if (mkdir(LOG_DIR, 1777) == -1)
{
cerr << "ERROR: " << strerror(errno) << endl;
}
else
{
cout << "Directory created";
}
log.open (LOG_LOCATION);
log << OUTPUT_LOG << endl;
log.close();
}
При использовании этой программы код компилируется и даже работает нормально.Это просто не делает каталог, как я ожидаю.Из-за этого он также не создает файл журнала.
Спасибо!