如何在链接期间替换pthread_create

2024-03-23

我想维护所有正在运行的线程的列表,以及有关每个线程的一些附加信息。在这个answer https://stackoverflow.com/a/3476240/4676150提到可以提供我自己的 pthread_create 版本并将程序与其链接。 同样重要的是,我想在我的覆盖版本的末尾调用原始的 pthread_create 。

有人可以详细解释如何完成和/或提供一些代码示例吗?


您可以通过调用以下命令查找原始 pthread_create 函数的符号:

pthread_create_orig = dlsym(RTLD_NEXT, "pthread_create");

包装器将如下所示:

#include <dlfcn.h>

int (*pthread_create_orig)(pthread_t *, const pthread_attr_t *, void *(*) (void *), void *);

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start) (void *), void *arg) {
       if (!pthread_create_orig)
           pthread_create_orig = dlsym(RTLD_NEXT, "pthread_create");
       return pthread_create_orig(thread, attr, start, arg);
}

将其编译为共享库并在启动可执行文件时预加载它。

说明:通常,第一个参数dlsym()是打开的库的句柄dlopen()。特殊手柄RTLD_NEXT用于搜索该符号的下一个出现位置,即默认情况下不会链接的符号。这是 libpthread 中的符号,而不是预加载库中的符号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在链接期间替换pthread_create 的相关文章

  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 如何在列表框项目之间画一条线

    我希望能够用水平线分隔列表框中的每个项目 这只是我用于绘制项目的一些代码 private void symptomsList DrawItem object sender System Windows Forms DrawItemEvent
  • C++ 子字符串返回错误结果

    我有这个字符串 std string date 20121020 我正在做 std cout lt lt Date lt lt date lt lt n std cout lt lt Year lt lt date substr 0 4 l
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C 预处理器库

    我的任务是开发源分析工具C程序 并且我需要在分析本身之前预处理代码 我想知道什么是最好的图书馆 我需要一些重量轻 便于携带的东西 与其推出自己的 为什么不使用cpp这是的一部分gcc suite http gcc gnu org onlin
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • Qt moc 在头文件中实现?

    是否可以告诉 Qt MOC 我想声明该类并在单个文件中实现它 而不是将它们拆分为 h 和 cpp 文件 如果要在 cpp 文件中声明并实现 QObject 子类 则必须手动包含 moc 文件 例如 文件main cpp struct Sub
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • C# 中的递归自定义配置

    我正在尝试创建一个遵循以下递归结构的自定义配置部分
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im
  • WCF:将随机数添加到 UsernameToken

    我正在尝试连接到用 Java 编写的 Web 服务 但有些东西我无法弄清楚 使用 WCF 和 customBinding 几乎一切似乎都很好 除了 SOAP 消息的一部分 因为它缺少 Nonce 和 Created 部分节点 显然我错过了一
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • 限制C#中的并行线程数

    我正在编写一个 C 程序来生成并通过 FTP 上传 50 万个文件 我想并行处理4个文件 因为机器有4个核心 文件生成需要更长的时间 是否可以将以下 Powershell 示例转换为 C 或者是否有更好的框架 例如 C 中的 Actor 框
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两

随机推荐

  • 当信号到来时杀死 bash 脚本前台子进程

    我将 fastcgi 应用程序包装在 bash 脚本中 如下所示 bin bash stuff fastcgi bin stuff 由于 bash 仅在前台脚本结束时执行信号陷阱 所以我不能只是kill TERM scriptpid因为 f
  • Objective-C 类中的 Swift 协议扩展

    我有一个用 Swift 编写的协议 应该由多个控制器遵守 其中一些控制器是用 Objective C 编写的 并非所有人都需要此 Swift 协议中的所有方法 因此首先我决定提供一些具有默认实现的方法 以使它们成为 可选 但在这种情况下 我
  • TensorFlow 的无效参数错误(形状不兼容)

    我正在尝试使用 MNIST 数据集的张量流训练一个简单的网络 目前虽然它不起作用 它基本上是 TensorFlow 网站上给出的示例的修改版本 我只是改变了几行并删除了一层来看看发生了什么 这是我的代码 usr bin python imp
  • Spark JDBC fetchsize 选项

    我目前有一个应用程序 它应该连接到不同类型的数据库 使用 Spark 的 JDBC 选项在该数据库上运行特定查询 然后将生成的 DataFrame 写入 HDFS Oracle 的性能非常糟糕 没有检查所有这些 原来是因为fetchSize
  • 使用 matlab 识别实时视频源中的白框

    我目前正在使用 matlab 编写一个项目 该项目使用两个相对较大的方块来识别实时视频源中的一张纸 然而 纸张可以是任何颜色或上面有任何图像 我对彩色图像使用白色框 对非彩色图像使用黑色框 尽管这些框在视频中显示得非常清楚 但我不知道如何编
  • CSS3 同一元素的多次转换

    我正在尝试为我的一张背景图像制作下拉效果 我可以使用 css3 做到这一点 但它并不完整 效果应该是窗帘落下然后弹回一点 css3 的问题是我不知道如何对同一属性进行转换 因为最后一个会覆盖前一个 这是我的代码 ul nav li a AD
  • 如何在“删除文件”任务中从删除中排除某些目录和文件

    我想删除其中的所有文件 Build ArtifactStagingDirectory 它是相应构建代理文件夹中所谓的 a 文件夹 单击阅读有关天蓝色管道中预定义变量的更多信息 我也知道删除文件任务 https learn microsoft
  • Spark 结构化流检查点在生产中的使用

    在使用 Spark 结构化流时 我很难理解检查点的工作原理 我有一个 Spark 进程 它会生成一些事件 并将其记录在 Hive 表中 对于这些事件 我在 kafka 流中收到确认事件 我创建了一个新的火花过程 将 Hive 日志表中的事件
  • 用 C 和 C++ 编写的解释器如何将标识符绑定到 C(++) 函数

    我在这里讨论的是 C 和 或 C 因为这是我所知道的唯一用于解释器的语言 其中以下可能会出现问题 如果我们有一种解释性语言 X 为其编写的库如何向该语言添加函数 然后可以从用该语言编写的程序中调用这些函数 PHP 示例 substr str
  • 控制台maven编译错误

    我正在制作春季官方指南之一 http spring io guides gs maven http spring io guides gs maven 但是 当到达必须使用 Maven 进行编译的部分时 会发生以下情况 INFO Scann
  • 替换嵌套数组中的对象

    我有一个数组 其中存储了另一个代理数组 在此代理数组中 仅包含每个代理的 id 使用 ID 我获取每个代理所需的数据 并且我想用新的完整代理数据替换原始代理数组 或者至少将新数据推送给特定代理 这是我到目前为止所尝试过的 有简单的方法吗 如
  • .net C#,保护每种方法的最佳实践是什么?

    我有一个 Web 项目 其中有一个处理一些数据操作的业务层 我想通过检查是否存在活动的未结束有效来保护某些或所有方法Session在执行该方法之前 我首先想到使用Attribute上课了 但我无法正确运行它 由于该类是一个普通类并且不是派生
  • 具有相同底层类型和相同扩展方法的顶级不透明类型

    我在定义具有相同底层类型和扩展方法的不透明类型时遇到了一个问题 例如 opaque type HandleA Int object HandleA def apply value Int HandleA value extension ha
  • jmockit 和 robolectric 可以共存吗?

    我正在尝试使用 Robolectric 来替换 android jar 中的存根方法来实现单元测试 同时还使用 jMockit 来模拟 Android 类 在我的例子中为 Fragment 但是 我似乎无法让它发挥作用 如果我用注释测试类
  • Magento - 如何查询管理员的角色名称?

    我正在尝试获取当前登录管理员的角色名称 我可以获得管理员用户 但我不知道如何查询他们的角色名称 Magento 文档很弱 usr Mage getSingleton admin session gt getUser 有人有想法吗 说得太早了
  • 具有扩展选择参数的 Jenkins 声明式管道

    我尝试使用 Jenkins 实现我的第一个声明式管道 以便能够将作业的参数定义也放在 SCM 下 我想转移具有扩展选择参数的现有作业 不幸的是 我无法将其添加到脚本的parameters 部分 在插件页面上 https wiki jenki
  • 在 HTTP 响应标头中使用内容处置

    我发现以下 asp net 代码在从数据库提供文件时非常有用 Response AppendHeader content disposition attachment filename fileName 这允许用户将文件保存到他们的计算机
  • Android 通过 ID 获取联系人组

    我有联系人 ID 如何获取联系人所属的组 我确信这与 Contacts Groups 类有关 但我无法弄清楚 In GroupMembership PERSON ID你有这个人的 ID 并且在同一张表中GroupMembership GRO
  • 如何在 .ascx 页面中使用 javascript

    如何在 ascx 页面中使用 javascript 您可以将脚本标签添加到标记中 Or use 脚本管理器 http msdn microsoft com en us library system web ui scriptmanager
  • 如何在链接期间替换pthread_create

    我想维护所有正在运行的线程的列表 以及有关每个线程的一些附加信息 在这个answer https stackoverflow com a 3476240 4676150提到可以提供我自己的 pthread create 版本并将程序与其链接