是否可以检查线程的所有者(具有pthread id)是root用户还是非root用户?从我在互联网上搜索的内容来看,似乎没有直接的方式来获取所有者信息。 (对于当前线程,我知道我们可以使用getuid()调用。但我有兴趣获取其他线程的信息。)
答案 0 :(得分:1)
一个线程在与使用pthread_create()启动它的代码相同的进程中运行。不要将线程与进程,fork()等混淆。除非你的程序调用了一个setuid()函数系列,它应该与main()中的完全相同。
编辑:基于以下新信息。
使用pthread_ *接口没有标准方法来查询有关其线程或其根状态的单独进程。在特定平台上可能有可能检查特定于操作系统的进程信息以获取该数据,但没有可移植的方式。此外,您没有提到您正在运行此平台的平台,或者它是否需要跨平台工作。
您可以使用其他一些IPC方法来查询线程应用程序(如果您也可以修改它)并直接询问它是否以root身份运行。必须更改线程应用程序以跟踪其所有线程,其tid等,以便按照您在下面描述的方式回答问题。您仍然需要确保您选择的IPC机制也可以移植到支持的平台。
但是,来自一个进程的pthread线程ID本身对另一个进程的价值非常小。你应该仔细考虑你真正想要完成的事情,并提出足够详细的问题来涵盖真正的目标。