

system関数で
int main(){
int i;
i = system("./test.exe");
printf("i=%08x", i);
}
として、test.exeを呼び出しています。
test.exeでは、
int test(){
clock_t a, b;
int i, j;
j = 0;
a = clock();
for (i=0;i<0xFFFFFF;i++) j++;
b = clock();
return (int) (b-a);
}
int main(){
int i;
i = test();
return i;
}
として、iの値を戻しています。
試したところでは、i = 63が戻り値となるはずですが、
0x3f00という値がsystem関数から渡されています。
systemだと、シェルも動作できるのでこの戻り値はOS(or cygwin)からの戻り値になると考えています。この理解で正しいでしょうか?
また、この場合のi = 63を戻す方法はあるのでしょうか?
環境はXP Home + cygwin + gcc4.3.0です。
No.1ベストアンサー
- 回答日時:
>systemだと、シェルも動作できるのでこの戻り値はOS(or cygwin)
>からの戻り値になると考えています。この理解で正しいでしょうか?
多分違う。
system() は結局、内部でシェルを fork() してコマンドを実行、そのプロセスの終了ステータスを戻しているだけだったかと。
WEXITSTATUS(status) マクロとかを使えばよいのでは?
この例の場合はむしろ自前で fork() した方が早いと思う。
有難うございます。
forkは初耳だったもので、調べてみました。
fork: 子プロセスを生成
exec: プロセスを実行
という感じのようですね。
http://www.slogical.co.jp/tech/unixc_forkexec.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
最早開始時間と最遅完了時刻を...
-
構造体の勉強中です 合計点の高...
-
C言語 エラーの原因がわからな...
-
#define _CRT_SECURE_NO_WARNIN...
-
(マルチスレッド)_beginthrea...
-
「指定されたキャストは有効で...
-
(C言語)❝void *❞型の理由、❝#de...
-
newの使い方について。
-
if と配列の組み合わせ
-
PowerShellがうまくいかない
-
C言語でのプログラム
-
int16_t の _t は何?
-
C言語 等差数列問題
-
read関数をノンブロッキングで...
-
プログラミングについて質問で...
-
C言語での引数の省略方法
-
部分行列の抜き出し(C言語)
-
C言語のサイコロシミュレート
-
「{ } で囲むだけ」は正しい?
-
c言語の関数定義について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
【C++】関数ポインタの使い方
-
C言語 エラーの原因がわからな...
-
複数桁10進数の*桁目だけを抽出...
-
return 1L
-
if と配列の組み合わせ
-
ラップ関数とはどんなものですか?
-
式は定数値が必要です」という...
-
数字列を3桁ごとにカンマで区切...
-
実数の整数部,小数部の取得
-
C言語でDxlibを使って3x3の奇数...
-
プログラムについて(UNIX)
-
acceptをalarmでタイムアウトさ...
-
C言語の課題です
-
エラー 添字が付けられた値が、...
-
CStringの配列要素を関数で受け...
-
最早開始時間と最遅完了時刻を...
-
入力された数字を大きい順に並...
おすすめ情報