linux中线程的pid,线程的tid和线程pid

在linux系统中,

每个进程有一个pid(进程ID),获取函数:getpid()

每个线程有一个tid(线程ID),获取函数:pthread_self()

每个线程有一个pid(不知道叫什么),获取函数:syscall(SYS_gettid)

程序举例:

void *hello(void *arg)
{
  printf("%ld\n", syscall(SYS_gettid));
  printf("%d\n", getpid());
  printf("%ld\n", pthread_self());
}


int main()
{
  printf("%ld\n", syscall(SYS_gettid));
  printf("%d\n", getpid());
  printf("%ld\n", pthread_self());
  printf("------------------------------\n");
  pthread_t pthread_id;
  pthread_create(&pthread_id, NULL, hello, NULL);
  sleep(2);
  printf("------------------------------\n");
  printf("%ld\n", syscall(SYS_gettid));
  printf("%d\n", getpid());
  printf("%ld\n", pthread_self());

  return 0;
}

结果显示

linux中线程的pid,线程的tid和线程pid

注意:主线程的pid和所在进程的pid一致,可以通过这个来判断是否是主线程 

上一篇:Linux多线程编程


下一篇:Linux下获取线程ID tid的方法