我正在用 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/