分割ジョブを2つの子プロセスにしたい。 1人の子供は、最小値ともう1つの最大値を見つけます。ここで はサンプルコードです:ジョブを2つのスレッドに分割して使用wait、waitpid、fork
今値はmin返す:0最大:0、あなたはこれを見てだろうか?
分割ジョブを2つの子プロセスにしたい。 1人の子供は、最小値ともう1つの最大値を見つけます。ここで はサンプルコードです:ジョブを2つのスレッドに分割して使用wait、waitpid、fork
今値はmin返す:0最大:0、あなたはこれを見てだろうか?
スレッドに分割されておらず、新しいプロセスに分割されています。新しいプロセスにはそれぞれ独自のバージョンの変数があります(新しいプロセスにはそれぞれ独立したメモリがあります)。何らかの種類のIPCが必要か、実際にスレッドを使用する必要があります。
プロセスはメモリを共有しません。関数によって変更されたmin/maxvalueグローバル変数は、プロセスにとってローカルです。それらのどれも親のmin/maxvalue変数には触れません。 何らかの方法で結果を伝える必要があります。パイプ/ソケットを使用します。
あなたは実際に3つのプロセスを産んでいるというさらなる問題があると思います。 最初のfork()でforkされた最初のプロセスは、ifで保護されていないため、2番目のfork()を実行します。
しかし、パイプライン/ソケットを使用しないチャンスはありますか?各プロセスからの戻りデータを捕捉するだけですか? – mike00
私が提案したことを誇りに思う他の方法はありません。 – Teudimundo
うん、おそらくWEXITSTATUSで? – mike00
説明したように、スレッドを使用していません。
しかし、1つのループでmin/maxの両方を探すことができるときは、どうしてですか?
あなたはポイント検索の最小値/最大値を考えていますか?そして私はfork()を使って何かをしようとしますか? Pls ... – mike00
提供されたコードを見てください。 1つのルックで最小/最大の両方を見つけることができます。 –
Ok、static int minValue = 0に変更します。しかし影響を与えない。たぶんどのように戻り値、各プロセスをキャッチ? – mike00
あなたはこれを得ていません。フォークされたプロセスはそれぞれ独自の変数*を持っています。つまり、コピー*を処理するとき、あなたが印刷している元の値*は決して変更されません。フォークされたプロセスとスレッドの違いを実際に読む必要があります。 – tbert