Получить путь к «двоичному файлу» / «исполняемому файлу» из pid с помощью boost? - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь написать процедуру, которая возвращается из заданного пути PID в его двоичный файл или исполняемый файл, в зависимости от платформы.Я знаю, что это можно сделать в Windows с помощью windows.h, но это решение зависит от платформы.

Я пытался найти решение с помощью Qt, но я не достиг своей цели, потому что нет способасоздать QProcess или любой другой класс, используя предоставленный PID.

Но boost (v1.66) имеет класс boost :: process :: child, который может быть создан с использованием предоставленного PID и может даже возвращать собственный дескриптор (boost:: процесс :: ребенок :: native_handle_t).Но оттуда я не знаю.

У него нет никаких методов (что неудивительно, потому что это кажется псевдонимом для void *), но я не смог найти какой-либо метод, извлекающий какую-либо информацию из этого "class "либо.

Так есть ли способ извлечь информацию о местоположении двоичного файла из заданного PID, используя boost или нет ??

Черновик функции:

boost::filesystem::path GetExecutable (boost::process::pid_t pid) {
   boost::filesystem::path path_to_executable;

   bp::child process (pid);
   boost::process::child::native_handle_t handle = process.native_handle();
      .
      .
      .
   return path_to_executable;
}

1 Ответ

0 голосов
/ 06 июня 2019

boost::process::child на самом деле не предназначен для этого. Он будет просто обрабатывать pid, переданный как дочерний процесс, так что вы можете выполнять такие операции, как присоединение, проверка его работы, завершение, проверка возвращаемых значений и т. Д. Разумеется, для этого потребуются правильные права доступа. хочет сделать эти операции.

Вы можете получить собственный дескриптор (используя child::native_handle()), но это всего лишь тот pid, который вы уже указали при его создании, так что вы просто вернетесь к исходной точке.

Итак, простой ответ - «Нет». Вы не можете сделать это, используя boost::process::child.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...