我在C中编写一个应用程序,它使用用户定义的静态链接库(使用-l选项)和我预加载的动态链接库(使用ld-preload)。现在我有一个从静态链接库设置的变量(套接字连接),同样的客户端套接字也将由其他共享库使用。
如何在库中声明和维护此客户端套接字的值,直到连接完全从调用进程中断开。
谢谢
答案 0 :(得分:1)
我从来没有这样做,但似乎就是这样:
extern int yourfileno;
进入静态库的头文件应该可以工作。 在同一个库的一个c文件中声明此全局变量。
这实际上与在库中创建get / set例程相同。
有些人可能认为让静态库声明结构定义是更好的做法:
typedef struct {
int fileno;
int is_opened;
...other stuf;
} StatLibType;
然后让您的主程序调用类似于:
StatLibType *statlib_new_connection();
将新创建的结构传递给另一个动态库,以便它可以使用它。