我正在尝试编写一个程序,我必须通过(共享)库调用一些函数(其源代码可用)。库的 C 代码有几个全局变量,许多函数会更改这些全局变量的值。我在我的程序中必须做的事情要求我所做的每个函数调用都可以使用一组新的变量。
例如,让这个函数成为库的一部分:
int x = 1;
int foo()
{
int a = 0;
//do somethings to 'a'
//...
x++;
return a;
}
现在,每次我foo()
从我的程序中调用时,值x
都会从 1 更新到 2,然后是 3,然后是 4,依此类推……我尝试构建一个程序,以便每次foo()
调用时,它都会看到 x = 1。
很抱歉,我对 C/linux 如何处理这些变量空间的知识还不够,所以这个问题可能看起来很模糊。以上只是一个小例子;实际上,有很多变量几乎不可能手动重置它们的值。
编译该库和/或在我的程序中使用它以刷新变量的最佳方法可能是什么?
(附带说明一下,我还想做的是并行化对 foo() 的调用,但由于共享变量,我不能这样做。)
编辑:在处理一些 Web 开发项目时,我曾经将一些代码封装在 Web 服务中,然后从主程序中调用这些服务。C/Linux 中是否存在类似的框架?请注意,函数正在返回数据。