Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 将变量放入程序不同部分的缓冲区中_C_Sockets_Buffer - Fatal编程技术网

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

C 将变量放入程序不同部分的缓冲区中,c,sockets,buffer,C,Sockets,Buffer,我目前正在从事一个C项目,该项目要求我通过套接字连接(在同一台机器上,通过“localhost”)将变量从一个文件发送到另一个文件。因此,为了将变量从文件A发送到文件B,我将这些变量放在一个缓冲区(定义为char 1D数组)中,并发送包含不同变量的整个缓冲区。为此,我使用sprintf(缓冲区,“%f\n%f\n”,variable1,variable2)来放置文件A中的变量。要使文件B读取缓冲区,并将缓冲区中的变量与其自身的变量相关联,我需要: sscanf(缓冲区,“%f\n%f\n,&va

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

然而,我想知道是否有可能通过程序中的不同实例将变量放入文件A的缓冲区。如果是这样,每次将新变量放入缓冲区,文件B是否能够以与放入文件A相同的顺序访问变量?例如,如果变量1和变量2放入A点的缓冲区,然后变量3放在B点的缓冲区中,文件B是否能够按该顺序访问这些变量

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


我不确定我的问题是否足够清楚,但我希望是这样,我感谢您的帮助!

看起来您可以使用标准的Unix IPC机制解决您的问题。您没有给出太多关于您想要实现的具体细节,但您似乎可以尝试以下方法:

  • 创建进程共享的信号量(命名或不命名)
    • 查找
      sem\u open
  • 创建一个完全位于共享内存中的数据结构(可能是一个队列)
    • 查找
      shm\u open
      mmap
  • 队列上的所有操作都应受到信号量的保护
    • 例如,
      add
      到队列中应该由
      sem\u wait
      /
      sem\u post
      块保护

请将代码的相关部分与您的question@ManuelSelva我在问题中包含了我使用的不同函数,但我无法将它们作为代码包含,因为我使用的是旧版本的Internet Explorer,您的目标是哪个操作系统?@cnicutar我使用的是Linux操作系统谢谢您的回答!