我知道如何在線程的上下文中執行時打印線程ID,但我想打印進程產生的所有線程ID。我需要這個與strace輸出關聯來進行調試。如何在linux上打印一個進程的所有線程的線程ID
如何獲得當前線程ID:
pid_t x =系統調用(__ NR_gettid);
我知道如何在線程的上下文中執行時打印線程ID,但我想打印進程產生的所有線程ID。我需要這個與strace輸出關聯來進行調試。如何在linux上打印一個進程的所有線程的線程ID
如何獲得當前線程ID:
pid_t x =系統調用(__ NR_gettid);
從https://unix.stackexchange.com/a/901/134332
對於每個過程中,大量的信息在哪裏/proc/12345
12345
是進程ID是可用的。有關每個線程的信息,請參閱/proc/12345/task/67890
,其中67890
是內核線程ID。這是ps,top和其他工具獲取信息的地方。
您可以閱讀虛擬/proc
文件系統。遍歷/proc/self/task
中的dirname。
if(DIR* dir = opendir("/proc/self/task")) {
while (dirent* entry = readdir(dir))
if (entry->d_name[0] != '.')
std::cout << entry->d_name;
closedir(dir);
}