극히 개인적이고 극히 대단하지 않은

리눅스에서 thread의 pid를 확인하는 코드 본문

20년차 개발자

리눅스에서 thread의 pid를 확인하는 코드

회색싼타 2022. 10. 27. 21:05

Multithread program을 작성하고 버그를 잡다보면 thread의 pid를 알아야 간지러운 곳이 해결되는 경우가 있다. 특히 gdb를 이용해서 디버깅을 하는 경우에 아쉬울 때가 많다.

그런 경우에는 thread 내부에서 다음과 같은 코드를 수행하면 자신 thread의 pid를 알 수 있다.

syscall(__NR_gettid)

예를 들어 다음과 같이 코딩을 하면 thread 이름과 pid를 확보할 수 있다.

#include <linux/unistd.h>
#include <stdio.h>
#include <pthread.h>

void *sample_thread (void *arg)
{
    ...
    printf ("Thread Information :: [%s][%d]\n", __func__, syscall(__NR_gettid));
    ...
    pthread_exit (NULL);
}

 

Comments