Linux:给定一个ID,检查它的PID或TID是否为C

时间:2012-10-23 09:48:32

标签: c linux operating-system linux-kernel

您将获得一个ID作为流程的输入。我们需要找到它的PID或TID 该ID可以是同一过程中不必要的任何过程。 例如:

。\ a.out 1234

输出:它是一个主题ID。

我需要在我的程序中获得相同的信息。 如果我做

ps -elf | 1234 

它将列出具有给定ID的所有条目。 PID与TID相同的条目是一个过程,如果它们与一个线程不同。 我想通过C程序

做同样的事情

2 个答案:

答案 0 :(得分:3)

PID和TID都是数字(标识符)。你会如何区分?在单线程代码中,PID和& TID是一样的。

答案 1 :(得分:0)

您可以做的最好的事情是检查当前的线程或进程。使用getpid()获取当前进程id,如果它与给定的pid相同,则显然是进程ID。

pthread_self()返回当前线程的id。

但是,当它属于另一个进程或线程时,这将毫无用处。

这适用于POSIX线程和fork进程api

编辑:@Chris建议可以为其他进程和线程ID探索proc文件系统。但是,可能需要特权访问。详情在问题

的评论中解释