gpt4 book ai didi

c++ - 计算使用共享库的程序数

转载 作者:IT王子 更新时间:2023-10-29 00:40:46 25 4
gpt4 key购买 nike

我有一个库 foo.so。每次启动新程序时,它都会使用该库进行加载。我想(以某种方式)在库中声明一个静态变量,并通过一个也使用 foo.so 库加载的程序栏询问加载了多少程序(使用该库)。我尝试了 static 和 extern,但每次每个程序的变量都被初始化为零(所以当我询问 bar 关于计数器时,它告诉我它是 1)。是否有可能以某种方式获得我想要的结果?

最佳答案

您将需要使用某种跨进程结构。我没有在 Linux 上练习,但我怀疑 shared memorysemaphore将是一个不错的选择。由于您不会将信号量用于正常用途,因此它可能看起来有点奇怪,甚至可能停止工作。但我认为一个简单的信号量方法是执行以下操作:

加载中: sem_open创建具有唯一名称和计数 0 的信号量,或打开已创建的信号量。那么sem_post增加它的值(value)。

检查中: sem_getvalue读取存储在信号量中的当前计数。

卸载时: sem_wait (或其尝试或超时变体之一)减少信号量的计数,然后是 sem_close如果您正在仔细清理资源。如果您感觉良好并且可以避免竞争条件,请调用 sem_unlinksem_destroy在系统资源全部卸载后释放系统资源。

(可选地,您可以尝试在每个这些位置打开、处理和关闭信号量,以避免必须绕过 sem_t。但是如果系统自动清理一个信号量任何地方都不开放,这对您的目的来说是灾难性的。)

关于c++ - 计算使用共享库的程序数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24064412/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com