Linux下获取线程ID tid的方法

  使用Linux Redhat7编写代码的时候,需要使用 gettid() 函数获取线程ID。使用 man gettid 命令查看了一下,gettid()函数的头文件是 #include<sys/types.h>, 但是导入了该头文件以后,再使用 gettid() 函数程序在gcc编译的时候,仍然会报 undefined reference to 'gettid'。

  网上查阅资料以后发现,需要使用 syscall 的方式进行调用。所以可以用如下方式进行一个简单的封装,这样就可以使用 gettid()了

#include <unistd.h>
#include <sys/syscall.h>
#define gettid() syscall(__NR_gettid)

 

  或者也可以使用 pthread_self(),该函数可以获取当前线程的线程ID。

 

  具体为什么要这样处理的原因还不太清楚,既然可以查到函数,并且也导入了相应的头文件,但是还是使用失败,具体原因后续查阅了解后再做补充。

posted on 2019-07-31 11:42  徐涌力斯兰  阅读(6872)  评论(0编辑  收藏  举报