[英]Get thread Id for a process programmatically that matches htop's corresponding pid
我已經看到,在htop的樹模式下,我的多線程程序具有多個進程。 我知道它們是線程ID。 但是,此ID與pthread_create函數返回的線程ID不匹配。
int _id = pthread_create(&m_iAudioThreadID, NULL, AudioRecvThread, this);
m_iAudioThreadID
是否應該等於我們在htop樹狀模式中看到的PID? 雖然沒有。 如何從程序中以編程方式找到htop的PID? 謝謝。
m_iAudioThreadID是否應該等於我們在htop樹狀模式中看到的PID?
不,他們不是。 htop
向您顯示進程ID,PID。 由pthread_create()
設置的PThread-ID不同: Linux中進程與線程之間的區別
一個主要區別是PID在系統的現有進程中唯一地標識一個進程,PThread-ID在進程的現有線程中唯一地標識一個線程。
如何從程序中以編程方式找到htop的PID?
至少在最近的Linux上:要獲取與某個PThread關聯的PID,請從相關線程內使用gettid()
系統調用:
#define _GNU_SOURCE
#include <unistd.h>
#include <sys/syscall.h>
#include <sys/types.h>
pid_t gettid(void)
{
return syscall(SYS_gettid);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.