【问题标题】:C++ - Process infosC++ - 进程信息
【发布时间】:2011-10-17 10:10:08
【问题描述】:

我正在编写一个跨平台程序,它需要有关正在运行的程序的简单信息:process name、process id、thread id。

process id 和 thread id 在每个平台上都很容易获得,使用预处理器指令应该可以做到。

但是对于process name,我浏览了互联网,并没有发现任何简单的东西,而且有点跨平台,这并不奇怪。由于我正在编写一个必须非常易于使用的库,因此我无法访问 argv[0] 这正是我想要的。

我想知道是否有人有一个简单的方法来做到这一点?这个功能在官方boost版本中没有实现..不幸的是:(

【问题讨论】:

  • "使用预处理器指令应该可以做到" -- 这是什么意思?
  • #ifndef _WIN32 /* Linux 处理 / #else / Win 处理 */ #endif

标签: c++ process


【解决方案1】:

好吧,我怀疑你会找到一个不错的跨平台解决方案。
您很可能最终会在#ifdef 中拥有一些特定于平台的代码。

Linux 标准方法是查看 /proc 并解析结果。
Windows 方式使用的是sick API。

【讨论】:

  • 谢谢,我想我可以这样做。我希望 boost 很快就会覆盖它。
【解决方案2】:

为了补充@Andrejs Cainikovs 的回答,Windows 解决方案是对GetModuleFileName(NULL, charBuffer, elementCount) 的简单调用:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多