C++ - 流程信息

发布于 2024-12-10 14:07:53 字数 307 浏览 0 评论 0原文

我正在编写一个跨平台程序,需要有关正在运行的程序的简单信息:进程名称进程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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

玩心态 2024-12-17 14:07:53

好吧,我怀疑你会找到一个很好的跨平台解决方案。
您很可能最终会在 #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.

余罪 2024-12-17 14:07:53

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

To supplement @Andrejs Cainikovs' answer, the Windows solution is a simple call to GetModuleFileName(NULL, charBuffer, elementCount):

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文