1.1 背景
有时候需要获取线程id,结合strace工具,跟踪线程内部系统调用过程,但pthread_self()获取到的线程id是在程序内部用的,这里所有说的线程id,指的是能通过pstree查看,ps,htop查看的线程id,有时候用strace跟踪某个线程的内部系统调用,因此获取线程id,这个线程id对应程序和内核来说都是唯一的。
*1.2 获取方法 *
#include
syscall(SYS_gettid) 这个函数的返回值即是线程id,对于内核来说,是唯一的。
1.3 获取线程id之后,用strace跟踪线程,查看线程的系统调用过程
测试例子:
#include
#include
#include
#include
#include
#include
void log_file(char *s)
{
FILE *fd = NULL;
fd = fopen("/tmp/Log.txt", "a+");
time_t cur_time;
struct tm *local_time;
cur_time = time(NULL);
local_time = localtime(&cur_time);
if (fd == NULL)
{
return;
}
fprintf(fd, "%d:%d:%d:%s ", loc