c - 多个共享库使用的变量值

标签 c linux global-variables shared-libraries

我正在用 C 编写一个应用程序,它使用用户定义的静态链接库(使用 -l 选项)和我预加载的动态链接库(使用 ld-preload)。现在我有一个从静态链接库设置的变量(套接字连接),其他共享库也将使用相同的客户端套接字。

我如何跨库声明和维护此客户端套接字的值,直到连接完全从调用进程断开。

谢谢

最佳答案

我从来没有这样做过,但看起来像是:

extern int yourfileno;

进入静态库的头文件应该可以。 在同一库的其中一个 c 文件中声明此全局变量。

实际上这与在库中创建 get/set 例程是一样的。

有些人可能认为让静态库声明一个结构定义是更好的做法:

typedef struct {
        int fileno;
        int is_opened;
        ...other stuf;
} StatLibType;

然后你的主程序调用如下:

StatLibType *statlib_new_connection();

将新创建的结构传递给另一个动态库,以便它可以使用它。

关于c - 多个共享库使用的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6325898/

相关文章:

c++ - 将缓冲区写入文本文件

python - 全局变量没有传递,说它不被识别?

c - 理解gnu libc的strcmp函数

reactjs - 如何在 React Native 屏幕之间共享状态?

c - 遍历二维数组时出现段错误

c - 在 header 中声明结构使其成为全局结构

c - C 预处理器指令的 Lex 规则

c - 如何复制数组

linux - 在 bash 脚本中使用 "alternate screen"

linux - Linux 中 .bin 文件的 header 内容