No.1
- 回答日時:
こんにちは。
ずいぶん昔にUNIXでマルチプロセスのプログラム書いた経験のあるものです。
もう当時のプログラムもCリファレンスも手許にないので...、うろ覚えで
かつ、断片的な情報ですが、こんなのでも調べる何かのヒントになればと思い、
書きます。
親側で、wait()を使って子プロを待ち、調べたのではないかと思います。
確かこんな感じ...
int status;
wait(&status);
呼び出したプログラムのstatus値(exitの値)は、
stat = (status & 0x0000ff00) >> 8;
みたいな感じで計算すれば、取得できたのでは...。
詳しくは、UNIXのシステムコールリファレンスなんかを読めば載っていると
思います。
間違えてる可能性もあるので、よく確かめてくださいね。やってみて、あってたら
ラッキーってくらいに考えてください。
不確かな情報で申し訳ないです。
この回答への補足
うまくいきました。ありがとうございます。
ところで、
stat = (status & 0x0000ff00) >> 8;
って具体的に何をしてるんでしょうか。
&ってANDをとってるんでしたっけ?
戻り値が1のときstatus=100
2のときstatus=200って感じになってるのはわかったんですけど。
No.2
- 回答日時:
mar328です。
うまくいって何よりです。statusの計算処理ですが、あれはビット演算を施して、int値のstatus
(うちの処理系では32bit)から子プロの返すステータス値を取り出している
のです。(マシンはSun Sparcで、これはビッグエンディアンマシンです。)
wait(&status)で帰ってくるstatusには、いろいろな情報が入っていて、
それらはビット単位で格納されています。
(0~NビットまではXX、N+1~Mまでは○○、っていうかんじで)
細かい内容は忘れてしまい、資料も手許にないので、詳しいことが説明できない
のですが、そういうことです。
(※ソースから見ると、上位から3バイト目の8ビットに格納されている値を取り
出すために0x0000ff00とマスクをかけて、それをintに格納するために8ビット
分、右へシフトしているってところでしょうか)
昔私が使っていた本で、「UNIXシステムプログラミング」という本があって、
それにはわりとわかりやすく解説がありました。
(たぶん、羽山博著、オーム社だったと...)
まぁ、同じような本には載っているとは思いますが...。
こんな感じで、後は調べて見てください。
ただ、子プロセスを扱うプログラムは、親子で同期をとったり、また親子が同時に
動作しないといけないとか、いろいろ条件が複雑ですので、実際にシビアな使い方
をする場合は、よく仕様等を確認、テストしてくださいね。私も自信があまりない
ので、もし不具合等のトラブルがあっても、困りますので。
No.3ベストアンサー
- 回答日時:
質問に答え損ねてましたね。
&はANDをとる演算子です。ちょっと気になるのは、子プロのexit値が1とか2のとき
100とか200になるってことですが、使ってるマシンはなん
ですか?Pentium系でしょうか?Pentium系の場合、バイト
エンディアンはリトルエンディアンなので、このビット演算
のところが違うかもしれません。
エンディアンについて(ご存じかもしれませんが...)
intが4バイト整数の処理系の場合、
SPARCやRISC等のビッグエンディアンの場合、ビット並びは
+-+-+-+-+
|1|2|3|4| ですが、
+-+-+-+-+
Pentiumなどの場合、
+-+-+-+-+
|4|3|2|1| となっています。
+-+-+-+-+
私の書いたビット演算とシフトは、リトルエンディアンの場合、
違ってくる(かも)しれません。
いずれにしろ、statusの4バイトのうち、どこか1バイトにexit値が
隠れているはずですから、参考になる資料が手元になければ、試しに
いろいろやってみるうちに見つかるでしょう。
#なんていい加減な回答なんでしょう(^^; 他の詳しい専門家が見たら
#怒られるでしょうね...。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- PHP php エラー 2 2022/10/23 16:43
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- その他(プログラミング・Web制作) ログインシェル時のSHELL環境変数 1 2022/06/08 19:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
彼女のことが好きすぎて彼女の...
-
検便についてです。 便は取れた...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
尿検査の前日は自慰控えたほう...
-
精子が黄色?
-
中出しをするとお腹が痛い・・・。
-
EXCELで条件付き書式で空白セル...
-
excelでsin二乗のやり方を教え...
-
これって喉仏ですか? 私は女性...
-
口の中に黒い血の塊
-
納豆食べた後の尿の納豆臭は何故?
-
2つの数値のうち、数値が小さい...
-
エクセル指定した範囲からラン...
-
筋トレするとチンコが縮んじゃ...
-
変な話しになります。尿検査で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報