多个共享库使用的变量值

时间:2011-06-13 01:32:52

标签: c linux global-variables shared-libraries

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

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

谢谢

1 个答案:

答案 0 :(得分:1)

我从来没有这样做,但似乎就是这样:

extern int yourfileno;

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

这实际上与在库中创建get / set例程相同。

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

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

然后让您的主程序调用类似于:

StatLibType *statlib_new_connection();

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