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。

 

  具體為什么要這樣處理的原因還不太清楚,既然可以查到函數,並且也導入了相應的頭文件,但是還是使用失敗,具體原因后續查閱了解后再做補充。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM