我正在编写一个跨平台程序,该程序需要有关正在运行的程序的简单信息:process name
,process id
,thread id
。
process id
和thread id
很容易在每个平台上运行,使用预处理器指令应该这样做。
但是对于process name
,我查看了互联网,我没有找到任何简单和有点跨平台的东西,这并不令人惊讶。由于我正在编写一个必须非常简单易用的库,因此我无法访问argv[0]
,这正是我想要的。
我想知道是否有人有一个简单的方法来做到这一点?官方的升级版本没有实现此功能..不幸的是:(
答案 0 :(得分:2)
嗯,我怀疑你会找到一个很好的跨平台解决方案
最有可能的是,您最终会在#ifdef
内找到一些特定于平台的代码。
Linux标准方式正在研究/proc
并解析结果
Windows方式正在使用sick API。
答案 1 :(得分:2)
为了补充@Andrejs Cainikovs的回答,Windows解决方案是对GetModuleFileName(NULL, charBuffer, elementCount)
的简单调用: