2016-04-08 10 views
1

(1)メインプロセスがfork()を呼び出し、-1が返されると仮定すると、プロセスには子がありません。 wait(&status)と呼ばれるメインプロセスのこの呼び出しの後、マニュアルに従って-1を返します。 'status'変数は前と同じように変更されませんか?待ち状態(&ステータス)システムコールのさまざまな状況で、ステータス変数にはどうなりますか?

(2)wait(&status)行の直後にある場合は、status = WEXITSTATUS(status)という行があり、 'status'変数が変更されますか?

int status = 0; 
    if (fork()!=0) { 
    wait(&status); 
    status = WEXITSTATUS(status); 
} 
+1

これらは興味深い質問です。ここに投稿する以外に、あなたはそれらを試して答えを出したのですか? –

+0

Google検索、オフコース:)そして、私はこの状況のシミュレーションを行うことができないので、私は尋ねています。正確な行動については、人間の特定のものは何もありません。 – mike

+0

私はその質問を理解していません。文法の問題 – user3344003

答えて

2

1:未定義の動作。 waitpidが失敗した場合でもステータスは変更されないという保証はありません。

2:はい、ステータス= WEXITSTATUS(ステータス)。ステータスの値を置き換えます。 (具体的には、WEXITSTATUSは値の上位ビットをすべてマスクする必要があります)

関連する問題