簡體   English   中英

以編程方式獲取與htop的相應pid匹配的進程的線程ID

[英]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);
}

(靈感來自http://man7.org/linux/man-pages/man2/syscall.2.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM