文档章节

从 pthread_t 获得 PID 和 TID

UMU
 UMU
发布于 2017/11/24 10:37
字数 86
阅读 31
收藏 0

pthread_t 其实是一个结构体指针,里面包含了 TID 和 PID,找出它的偏移量就行。在 Ubuntu 16.04.3 x64上测试通过。

int get_tid_from_pthread(pthread_t t)
{
	struct pthread_fake {
		void *nothing[90];
		pid_t tid;
	};

	struct pthread_fake* f = (struct pthread_fake*)t;
	return f->tid;
}

int get_pid_from_pthread(pthread_t t)
{
	struct pthread_fake {
		void *nothing[90];
		pid_t tid;
		pid_t pid;
	};

	struct pthread_fake* f = (struct pthread_fake*)t;
	return f->pid;
}

© 著作权归作者所有

UMU

UMU

粉丝 120
博文 112
码字总数 44043
作品 0
厦门
程序员
私信 提问
看不懂Linux操作系统的两个小程序,不知道其执行结果,求解答

//(1) #inclube #inclube #inclube int value=5; int main() { pid_t pid; pid = fork(); if(pid==0) { value+=15; printf("child:value=%d\n",value); } else if (pid>0) { wait(NULL); ......

winkings
2014/04/06
461
4
unix环境高级编程-undefined reference to 'pthread_create'

笔者一直在学习unix环境高级编程。第十一章为线程编程。第一个程序就是打印线程ID。程序如下: [cpp] view plaincopy #include "apue.h" #include <pthread.h> pthread_t ntid; void printids......

天外飞鱼
2013/12/30
0
0
Linux多线程5-5_线程与fork

一、概述 1、当线程调用fork函数时,就为子进程创建了整个进程地址空间的副本,子进程通过继承整个地址空间的副本,也会将父进程的互斥量、 读写锁、条件变量的状态继承过来。也就是说,如果...

一生有你llx
2015/05/25
0
0
pthread_create创建线程后必须使用join或detach释放线程资源[内存泄漏]

原文:http://wifihack.net/blog/2009/12/pthread-create-join-detach-release-thread/ 这两天在看Pthread 资料的时候,无意中看到这样一句话(man pthread_detach): Either pthreadjoin(3) o......

nothingfinal
2012/12/05
0
0
linux多线程学习(一)---线程基础

一.什么是线程 在一个程序里的多个执行路线就叫做线程。更准确的定义是:线程是“一个进程内部的一个控制序列”。 典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情...

长平狐
2012/09/03
408
0

没有更多内容

加载失败,请刷新页面

加载更多

优雅的关闭Spring Boot

优雅的关闭Spring Boot 1、实现 TomcatConnectorCustomizer 接口拿到Tomcat的连接获取 Tomcat连接池 2、实现 ApplicationListener<ContextClosedEvent> 监听服务器关闭事件,注册JVM钩子函数...

sowhat
今天
2
0
Python3-Web开发

简介 Web开发框架 什么是Web框架? Web应用程序框架或简单的Web框架表示一组库和模块,使Web应用程序开发人员能够编写应用程序,而不必担心协议,线程管理等低级细节。 virtualenv是一个虚拟...

wuxinshui
今天
3
0
使用技媒体实践编写发布博客

技媒体实践博客 CSDN OSChina 知乎 简书 思否 掘金 51CTO

晨猫
今天
2
0
Lucene

1、什么是全文检索 数据分类 我们生活中的数据总体分为两种:结构化数据和非结构化数据。 结构化数据:指具有固定格式或有限长度的数据,如数据库,元数据等。 非结构化数据:指不定长或无固...

榴莲黑芝麻糊
昨天
5
0
python到setuptools、pip工具的安装

python安装 基础开发库   apt-get install gcc  apt-get install openssl libssl-dev 安装数据库和开发库   apt-get install mysql-server libmysqld-dev python环境   下载地址...

问题终结者
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部