2012-02-09 12 views

答えて

0

スレッドに分割されておらず、新しいプロセスに分割されています。新しいプロセスにはそれぞれ独自のバージョンの変数があります(新しいプロセスにはそれぞれ独立したメモリがあります)。何らかの種類のIPCが必要か、実際にスレッドを使用する必要があります。

+0

Ok、static int minValue = 0に変更します。しかし影響を与えない。たぶんどのように戻り値、各プロセスをキャッチ? – mike00

+0

あなたはこれを得ていません。フォークされたプロセスはそれぞれ独自の変数*を持っています。つまり、コピー*を処理するとき、あなたが印刷している元の値*は決して変更されません。フォークされたプロセスとスレッドの違いを実際に読む必要があります。 – tbert

1

プロセスはメモリを共有しません。関数によって変更されたmin/maxvalueグローバル変数は、プロセスにとってローカルです。それらのどれも親のmin/maxvalue変数には触れません。 何らかの方法で結果を伝える必要があります。パイプ/ソケットを使用します。

あなたは実際に3つのプロセスを産んでいるというさらなる問題があると思います。 最初のfork()でforkされた最初のプロセスは、ifで保護されていないため、2番目のfork()を実行します。

+0

しかし、パイプライン/ソケットを使用しないチャンスはありますか?各プロセスからの戻りデータを捕捉するだけですか? – mike00

+0

私が提案したことを誇りに思う他の方法はありません。 – Teudimundo

+0

うん、おそらくWEXITSTATUSで? – mike00

0

説明したように、スレッドを使用していません。

しかし、1つのループでmin/maxの両方を探すことができるときは、どうしてですか?

+0

あなたはポイント検索の最小値/最大値を考えていますか?そして私はfork()を使って何かをしようとしますか? Pls ... – mike00

+0

提供されたコードを見てください。 1つのルックで最小/最大の両方を見つけることができます。 –

関連する問題