【问题标题】:question on multiprocessing and static variables in C关于 C 中的多处理和静态变量的问题
【发布时间】:2011-05-04 08:37:16
【问题描述】:

我在使用 C 项目时遇到了一些问题。 情况如下:

  1. 我有一个主文件,其中包括一个带有静态变量的文件 .h 和另一个带有所有函数的 C 文件(这也包括文件 .h)。
  2. 如果我运行 main 它工作正常,但我想在不同的 shell 上运行不同的实例,以便我可以交换消息。

问题是两个进程都在内存的同一位置分配静态变量,因此第二个实例完成的操作将覆盖第一个实例的操作。

希望我说清楚了,我对 C 语言不是很精通。

【问题讨论】:

    标签: c variables static


    【解决方案1】:

    您不能使用静态变量在两个进程之间交换数据。您看到的地址很可能是virtual,即每个进程都有自己的地址空间,因此虽然地址可能看起来相同,但它实际上映射到不同的 RAM。

    您需要一个真正的inter-process communication (IPC) 解决方案,例如文件、共享内存、管道、套接字或类似方法。

    【讨论】:

    • 明确一点:静态变量不在进程之间共享。它们只是在链接到同一进程的所有库和目标文件之间共享。
    【解决方案2】:

    事实并非如此。每个进程都有自己完全独立的地址空间,因此它们不能相互覆盖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-14
      • 1970-01-01
      • 2012-08-24
      • 2013-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多