1

是否可以检查线程的所有者(具有 pthread id)是 root 用户还是非 root 用户?从我在互联网上搜索的内容来看,似乎没有直接的方法可以获取所有者信息。(对于当前线程,我知道我们可以使用 getuid() 调用。但我有兴趣获取其他线程的信息)。

4

1 回答 1

1

线程与使用 pthread_create() 启动它的代码在同一进程中运行。不要将线程与进程、fork() 等混淆。除非您的程序正在调用 setuid() 系列函数之一,否则它应该与 main() 中的函数完全相同。

编辑:基于以下新信息。

没有使用 pthread_* 接口查询单独进程的线程或其根状态的标准方法。在特定平台上可能可以检查特定于操作系统的进程信息以获取该数据,但没有可移植的方式。此外,您没有提及您在哪个平台上运行它,或者它是否需要跨平台工作。

您可以使用其他 IPC 方法来查询线程应用程序(如果您也可以修改它)并直接询问它是否以 root 身份运行。必须更改线程应用程序以跟踪其所有线程、它们的 tid 等,以按照您在下面描述的方式回答问题。您仍然需要确保您选择的 IPC 机制也可移植到支持的平台。

尽管如此,来自一个进程的 pthread 线程 ID 对另一个进程本身来说几乎没有价值。您应该仔细考虑您真正想要完成的工作,并提出一个包含足够详细信息以涵盖真正目标的问题。

于 2013-03-14T18:27:23.180 回答