我如何在C程序之间共享变量的值

Kau*_*hik 1 c ipc

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

  1. 创建了一个头文件:

    /* file1.h */
    extern int a = 0;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建了一个C文件:

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

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

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

Fin*_*fin 5

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

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

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

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