繁体   English   中英

使用boost从pid获取“二进制文件”/“可执行文件”的路径?

[英]Get path to “binary file”/“executable” from pid using boost?

我正在尝试编写一个例程,该例程从给定的PID路径返回到其二进制文件或可执行文件,具体取决于平台。 我知道它可以在Windows上使用windows.h完成,但这是依赖于平台的解决方案。

我试图使用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;
}

boost::process::child并不是真正意义上的。 它只会将作为子进程传递的pid视为处理,因此您可以执行诸如加入,查看它是否仍在运行,终止,检查返回值等操作。当然,它将需要正确的访问权限。想做那些操作。

你可以得到一个本机句柄(使用child::native_handle() ),但这只是你在构造它时已经提供的pid,所以你只需要回到child::native_handle()

那么简单的答案就是“不”。 你不能使用boost::process::child来做到这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM