我正在尝试编写一个从给定 PID 路径返回到其二进制文件或可执行文件的例程,具体取决于平台。我知道可以使用 windows.h 在 Windows 上完成,但这是依赖于平台的解决方案。
我试图使用 Qt 找到解决方案,但我离目标很远,因为无法使用提供的 PID 构造 QProcess 或任何其他类。
但是 boost(v1.66) 有一个类 boost::process::child,它可以使用提供的 PID 构造,甚至可以返回原生句柄 (boost::process::child::native_handle_t)。但从那里我不知道。
它没有任何方法(这并不奇怪,因为它似乎是 void* 的别名),但我也找不到从这个“类”中提取任何信息的任何方法。
那么有没有办法使用boost从给定的PID中提取有关二进制位置的信息,或者没有?
函数草稿:
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;
}