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;
    }
    

プログラムに値15を出力させたかったのですが、出力が0になりました。プログラムでもfile3.c値を取得するにはどうすればよいですか?file3.c

4

2 に答える 2

5

あなたのコードは間違っています。2 つのプロセス間で変数を共有しようとしていますが、2 つのソース ファイル間で共有しているため、変数を として宣言しexternても役に立ちません。これは、あるプロセスで 1 つのソース ファイルの変数を他のソース ファイルに公開する場合に行うことだからです。

2 つ (またはそれ以上) のプロセス (プログラム) 間で変数を共有する自然な方法は、UNIX システムで共有メモリと呼ばれるものです。

紹介はこちらのリンクからどうぞ。 http://www.cs.cf.ac.uk/Dave/C/node27.html

編集:もちろん、プロセス間通信(2つのプロセスが互いに通信する方法)は共有メモリに限定されず、ソケットまたはパイプを介して変数を共有することもできます

于 2013-06-03T09:07:35.733 に答える
2

ファイルをインクルードするだけで変数を共有することはできません。実行する 2 つの実行可能ファイルは、それぞれが独自のメモリ空間を持つ 2 つの異なるプロセスとして終了します。したがって、ヘッダーを含めるだけでは通信できません。作業中の OS が提供する ipc メカニズムのいずれかを使用する必要があります。UNIX の共有メモリや非常に単純なパイプのようなもの。

于 2013-06-03T09:13:43.993 に答える