Существует ли вариант exec
, который будет использовать текущий каталог приложения для определения местоположения целевой программы?
Я использую C ++ и Qt для реализации системы отчетов об ошибках "последнего рывка".Используя Google Breakpad , я могу создать мини-дамп и напрямую выполнить обработчик.Поскольку мое приложение находится в нестабильном состоянии, я просто хочу раскошелиться и запустить отдельный процесс обработки ошибок с использованием минимальных зависимостей.Приложение для сообщения об ошибках будет развернуто в том же каталоге, что и исполняемый файл приложения.
Я совершенно не знаком с параметрами fork
и exec
и не могу найти параметр exec
, включающий текущийкаталог приложения в пути поиска.Вот что у меня есть:
static bool dumpCallback(const char* /*dump_path*/,
const char* /*minidump_id*/,
void* /*context*/,
bool succeeded)
{
pid_t pid = fork();
if (pid == 0)
{
// This is what I would *like* to work.
const char* error_reporter_path = "error_reporter";
// This works, but requires hard-coding the entire path, which seems lame,
// and really isn't an option, given our deployment model.
//
// const char* error_reporter_path = "/path/to/app/error_reporter";
// This also works, but I don't like the dependency on QApplication at this
// point, since the application is unstable.
//
// const char* error_reporter_path =
// QString("%1/%2")
// .arg(QApplication::applicationDirPath())
// .arg("error_reporter").toLatin1().constData();
execlp(error_reporter_path,
error_reporter_path,
(char *) 0);
}
return succeeded;
}
Любые другие предложения по передовым практикам по использованию fork
и exec
также приветствуются;это мое первое знакомство с их использованием.На данный момент я обеспокоен только Linux (Ubuntu, Fedora);Позже я буду работать с обработчиками для других операционных систем.