1

フォークを使用するのはこれが初めてです。親プロセスで合計を計算し、子が親プロセスで合計に入力を提供するか、またはその逆を行いたいのですが、それができません。2 つの独立したプロセスとして機能します。処理する!!これを行うにはどうすればよいですか。入力を 1 と 2 として与えると、親は合計を 3 として返す必要があります

int main()  {

    int num1 = 0, num2 = 0, sum = 0;
    pid_t pid;
    pid = fork();
    if(pid == -1)
        perror("fork");
    if(pid > 1)
    {
        wait(NULL);
        printf("sum:%d\n",sum = num1 + num2);
    }
    if(!pid)
    {
        printf("Enter two number\n");
        scanf("%d %d", &num1, &num2);
    }

}  
4

2 に答える 2

2

フォークすると、各プロセスは変数の独自のコピーを取得するため (少なくとも論理的な観点からは、より多くのデータについてはコピー オン ライトを参照してください)、フォーク後に変更を加えて、他のプロセスが参照することを期待することはできません。それらの変更。

ある種のプロセス間通信を使用する必要があります。

http://en.wikipedia.org/wiki/Inter-process_communication

詳細については、この質問をご覧ください。

子プロセス間の UNIX パイプ

于 2012-12-05T02:31:00.590 に答える
0

プログラムで fork システム コールを使用すると、あるプロセスから別のプロセス (子プロセスから親プロセス) に戻ることができない別のプロセスが作成されるため、 fork システム コールを使用して 2 つのプロセス間で通信する場合は、名前のないパイプ (1 つ) を使用することを意味します。プロセス間通信の方法)

于 2012-12-05T07:11:17.350 に答える