4

私は、Operative Sytems クラスのプログラムを実行しています。できればパイプを使用せずに、子プロセスからその親プロセスに整数を渡す良い方法が必要です。

少し試行錯誤した後、次のような仕事をすることができました:

pid_t pid_son;
int status;

if( (pid_son = fork()) >= 0) {
    if(pid_son == 0) {
        int result = 0;
        // Make some arithmetic
         exit(result);   
    }
    else {
        while(pid_son != wait(&status));
        printf("The result is %d\n",result);
    }
}

しかし、それは私には「正しく」見えません( exit は、ランダムな整数ではなく、エラー処理のためにプロセスの終了ステータスを返すことになっています)。このトリックを使用せずに結果を親プロセスに「送信」するよりクリーンな方法はありますか?

4

3 に答える 3

1

共有メモリもここで機能します。

shmgetおよびshmat関数を調べる

于 2013-11-02T18:32:16.370 に答える
1

最もクリーンな方法は、子プロセスの標準出力を読み取ることです。

Cでは、それにはパイプが含まれます:)

あなたが思うほどひどいものではありません。popenを使用するための標準的な例を見てください。

編集: fork-exec ではなく、独自のプロセスの fork である場合、答えは依然としてパイプです。

于 2013-11-02T18:25:10.663 に答える
1

本当にパイプを避けたいと思っていて、よりあいまいなメカニズムを使用したい場合はsigqueue(3)、整数を別のプロセスに送信するために使用できる を調べることをお勧めします。

于 2013-11-02T18:26:47.923 に答える