编程时遇到错误:
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