将变量放在程序的不同部分的缓冲区中

时间:2014-03-24 10:12:07

标签: c sockets buffer

我目前正在开发一个C项目,它要求我通过套接字连接(在同一台机器上 - 通过“localhost”)将变量从文件发送到另一个。因此,为了将变量从文件A发送到文件B,我将这些变量放在缓冲区(定义为char 1D数组)中,并使用其中包含的不同变量发送整个缓冲区。为此,我使用sprintf(缓冲区,“%f \ n%f \ n”,变量1,变量2)来放置文件A中的变量。对于文件B来读取缓冲区,并将缓冲区中的变量与变量相关联它是我自己的,我这样做: sscanf(buffer,“%f \ n%f \ n,& variable1,& variable2);其中variable1和variable2已在文件B中定义。

但是,我想知道是否可以通过程序中的不同实例将变量放入文件A的缓冲区中。如果是这样,每次将新变量放入缓冲区时,文件B是否能够按照它们放入文件A的相同顺序访问变量?例如,如果将variable1和variabe2放入A点的缓冲区中,然后将varibale 3放入B点的缓冲区中,那么文件B是否能够按该顺序访问这些变量?

最后,如果同名变量放在两个不同位置的缓冲区中,第二次会覆盖第一个吗?即,如果变量1在点x中放入缓冲区然后再放在点y中,那么第二次将变量放入点y会覆盖它放在点x的时间吗?

我不确定我的问题是否足够清楚,但我希望它是,我感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

看起来您可以使用标准的Unix IPC机制解决您的问题。你没有提供太多关于你想要实现的具体细节,但似乎你可以尝试这样的事情:

  • 创建一个处理共享的信号量(已命名或未命名)
    • 寻找sem_open
  • 创建一个完全位于共享内存中的数据结构 - 可能是一个队列
    • 寻找shm_openmmap
  • 队列中的所有操作都应受信号量的保护
    • 例如,您的队列的add应受sem_wait / sem_post块保护