C++ - 流程信息
我正在编写一个跨平台程序,需要有关正在运行的程序的简单信息:进程名称
、进程ID
、线程ID
。
在每个平台上获取进程 ID 和线程 ID 都很简单,使用预处理器指令就可以做到。
但是对于进程名称
,我浏览了互联网,没有发现任何简单且有点跨平台的内容,这并不奇怪。由于我正在编写一个必须非常易于使用的库,因此我无法访问 argv[0] 这正是我想要的。
我想知道是否有人有简单的方法可以做到这一点?这个功能在官方 boost 版本中没有实现..不幸的是:(
I am writing a cross-platform program which requires simple information on the running program: process name
, process id
, thread id
.
The process id
and thread id
are simple to get on each platform, using pre-processor directives should do it.
But for the process name
, I looked over the internet and I didnt find anything easy and a bit cross-platform which is not that surprising. Since I am writting a library which must be extremely simple to use, I don't have access to argv[0]
which is exactly what I want.
I would like to know if someone had an easy way to do it ? This feature is not implemented in the official boost version.. unfortunately :(
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
好吧,我怀疑你会找到一个很好的跨平台解决方案。
您很可能最终会在
#ifdef
中得到一些特定于平台的代码。Linux 标准方式是查看
/proc
并解析结果。Windows 方式是使用它的 sick API。
Well, I doubt you will find a nice cross-platform solution.
Most likely you will end up having some platform specific code within
#ifdef
's.Linux standard way is looking into
/proc
and parsing the results.Windows way is using it's sick API.
为了补充 @Andrejs Cainikovs 的答案,Windows 解决方案是对 GetModuleFileName(NULL, charBuffer, elementCount) 的简单调用:
To supplement @Andrejs Cainikovs' answer, the Windows solution is a simple call to
GetModuleFileName(NULL, charBuffer, elementCount)
: