私は最近、オペレーティングシステムのコースを開始しました。私は出力が何であるか把握する必要があるこの質問に出くわしました。 Explain this code's working; how the child process returns values and where?
私は戻り値が、親でインクリメントし、印刷された子プロセスからのvalに返される方法を理解する - これは、この記事にSOの前に回答されているこのコードスニペットの出力が異なるのはなぜですか?
int main() {
int val = 5;
if(fork()) {
wait(&val);
}
val++;
printf("%d ", val);
return val;
}
- ここでは、コードですそのロジックに従った出力は実際には6 7
しかし、コードを自分で実行しようとしたとき、私はまったく異なるものを得ているようです。私は出力6 1537を取得します。インクリメントを削除すると出力が得られます - 6 1280
これは、返される値がval * 256であり、valだけではないことを意味します。 )。私はインターネット上で説明を探してみましたが、答えが見つからないようです。誰がここで起こっていることを説明できるなら、本当に助けになるでしょう。
コードの字下げは、実際に起こっていることに似ていません。 –
閉じ括弧が欠けているようです(または開き括弧が1つ多い)。 – WhozCraig
はい、そこに閉じ括弧を含めるのを忘れました。 – Zeokav