gpt4 book ai didi

c++ - Linux进程ID和线程ID

转载 作者:太空狗 更新时间:2023-10-29 23:46:51 32 4
gpt4 key购买 nike

假设我们有很多用户进程在 Linux 上运行。每个进程都有许多线程在运行。

我可以通过调用getpid()来获取进程ID,它的返回值是一个整数。

我可以通过调用 pthread_self() 获取线程 ID,它的返回值是一个名为 pthread_t 的不透明类型。

现在我需要在共享内存中存储进程ID(一个int,一般是4字节)和线程ID(pthread_t,需要弄清楚多少字节),以便以后使用两条 ID 信息,用于识别特定线程并检查线程是否仍在运行。

我发现许多在线资源将 pthread_t 转换为 unsigned intunsigned long。由于我不想在转换过程中丢失任何数据,我应该如何处理 pthread_t 数据,使其成为固定大小的数据(如前所述,我需要将线程信息存储在共享内存)。

另外,我以后应该如何通过进程 ID 和线程 ID 的组合来识别特定线程?如何判断线程是否还在运行?

最佳答案

如果要存储pid_tpthread_t在任何地方,您都应该使用它们各自的类型(即“pid_t”和“pthread_t”)。所以如果你想把它们存储在某个地方的共享内存中,做一个 memcpy()把他们带到那里。

至于通过 PID 和 TID 的组合来识别特定线程,请参阅 Nemo 的评论。

如果您确实假设它们会存在,您可以让您的程序查看 /proc找到合适的 pid 目录,并在 /proc/<pid>/task 中查找对于线程。

关于c++ - Linux进程ID和线程ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8565880/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com