undefined reference to gettid

编程时遇到错误:

undefined reference to `gettid'

查找文档发现要使用 syscall(SYS_xxx)的形式调用才行:

 

NAME     
       gettid - 得到线程标识符

SYNOPSIS
       #include <sys/types.h>
       pid_t gettid(void);

DESCRIPTION     
        gettid() 返回调用者的线程 ID (TID).

        在一个单线程的进程当中, 返回的线程 ID (TID)与进程 ID (PID,getpid返回值)相同. 
        在一个多线程的进程当中,所有的线程有同样的PID,但是每一个都有一个唯一的TID。


RETURN VALUE 
       成功时,返回 TID。

ERRORS        
       This call is always successful.

VERSIONS        
       The gettid() system call first appeared on Linux in kernel 2.4.11.

CONFORMING TO       
       gettid() is Linux-specific and should not be used in programs that are
       intended to be portable.

NOTES        
       Glibc(gnu发布的libc库,即c运行库)没有为这个系统调用提供一个封装。想调用它时使用 syscall(SYS_);
 这个函数调用的返回值TID,与POSIX TID的值不一样(例如pthread_self)。

 

在一个单线程的进程当中例子见:

http://blog.csdn.net/xsckernel/article/details/8543365

在一个多线程的进程当中例子见:

http://blog.csdn.net/xsckernel/article/details/8543377

 


你可能感兴趣的:(undefined reference to gettid)