-4

您将获得一个 ID 作为流程的输入。我们需要确定它是 PID 还是 TID 此 ID 可以是任何进程,而不是同一进程所必需的。例如:

.\a.out 1234

输出:它是一个线程 ID。

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

ps -elf | 1234 

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

4

2 回答 2

3

PID 和 TID 都是数字(标识符)。你会怎么区分?在单线程代码中,PID 和 TID 都是相同的。

于 2012-10-23T10:06:08.987 回答
0

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

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

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

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

编辑:@Chris 建议可以探索 proc 文件系统以获取其他进程和线程 ID。不过,可能需要特权访问。问题下的评论中解释了详细信息

于 2012-10-23T10:13:39.780 回答