我目前正在开发一个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的时间吗?
我不确定我的问题是否足够清楚,但我希望它是,我感谢任何帮助!
答案 0 :(得分:0)
看起来您可以使用标准的Unix IPC机制解决您的问题。你没有提供太多关于你想要实现的具体细节,但似乎你可以尝试这样的事情:
sem_open
shm_open
和mmap
add
应受sem_wait
/ sem_post
块保护