【发布时间】:2011-05-04 08:37:16
【问题描述】:
我在使用 C 项目时遇到了一些问题。 情况如下:
- 我有一个主文件,其中包括一个带有静态变量的文件 .h 和另一个带有所有函数的 C 文件(这也包括文件 .h)。
- 如果我运行 main 它工作正常,但我想在不同的 shell 上运行不同的实例,以便我可以交换消息。
问题是两个进程都在内存的同一位置分配静态变量,因此第二个实例完成的操作将覆盖第一个实例的操作。
希望我说清楚了,我对 C 语言不是很精通。
【问题讨论】:
我在使用 C 项目时遇到了一些问题。 情况如下:
问题是两个进程都在内存的同一位置分配静态变量,因此第二个实例完成的操作将覆盖第一个实例的操作。
希望我说清楚了,我对 C 语言不是很精通。
【问题讨论】:
您不能使用静态变量在两个进程之间交换数据。您看到的地址很可能是virtual,即每个进程都有自己的地址空间,因此虽然地址可能看起来相同,但它实际上映射到不同的 RAM。
您需要一个真正的inter-process communication (IPC) 解决方案,例如文件、共享内存、管道、套接字或类似方法。
【讨论】:
事实并非如此。每个进程都有自己完全独立的地址空间,因此它们不能相互覆盖。
【讨论】: