1

我需要共享一个变量的值,该值在一个程序中被修改以反映在另一个程序中。所以我做了以下事情。

  1. 创建了一个头文件:

    /* file1.h */
    extern int a = 0;
    
  2. 创建了一个 C 文件:

    /* file2.c */    
    #include"file1.h"
    #include<stdio.h>
    int main()
    {
        a = 15;
        printf("%d",a);
        return 0;
    }
    
  3. 创建了另一个 C 文件:

    /* file3.c */
    #include"file1.h"
    #include<stdio.h>
    int main()
    {
        printf("%d",a);
        return 0;
    }
    

我希望file3.c程序打印值 15,但它给出的输出为 0。如何在file3.c程序中也获得值?

4

2 回答 2

5

你的代码做错了什么;您正在尝试在两个进程之间共享一个变量,但是您所做的是在两个源文件之间共享,因此将变量声明为extern肯定对您没有帮助;因为如果您想在一个进程中将一个源文件中的变量公开给其他源文件,那么您就是这样做的。

在两个(或多个)进程(程序)之间共享变量的一种自然方式是 UNIX 系统中称为共享内存的东西。

请检查此链接以获取介绍。 http://www.cs.cf.ac.uk/Dave/C/node27.html

编辑:当然,进程间通信(两个进程如何相互通信)不仅限于共享内存,您还可以通过套接字或管道共享变量

于 2013-06-03T09:07:35.733 回答
2

仅通过包含文件是不可能共享变量的。您将运行的两个可执行文件将作为两个不同的进程结束,每个进程都有自己的内存空间。因此,您无法仅通过包含标头进行通信。您将不得不使用您正在使用的操作系统提供的一种 ipc 机制。像 unix 中的共享内存或非常简单的管道。

于 2013-06-03T09:13:43.993 回答