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で質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語 共用体について コマンドライン引数で値を2つ入力したときに、argv[2]の値をUNI u1 4 2022/04/25 20:34
- C言語・C++・C# C言語 3 2022/10/04 15:07
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
コマンド(例えばls)の出力結果を文字列で取得するプログラムの作成方法
C言語・C++・C#
-
system関数のエラー検出
C言語・C++・C#
-
system関数がうまくいかない
C言語・C++・C#
-
-
4
Cからシェルを起動し返り値をハンドリングする方法
C言語・C++・C#
-
5
system関数(Windows)の戻り値!!
C言語・C++・C#
-
6
UNIX-Cのsystem関数でエラーを捕捉したい
C言語・C++・C#
-
7
ネットワークにつながっているかの確認
UNIX・Linux
-
8
VC++から引数付きexeファイルの実行
C言語・C++・C#
-
9
system関数でのシェル起動について
C言語・C++・C#
-
10
C++でシェルを起動
C言語・C++・C#
-
11
Linuxで入力待ちなしkeyread関数のようなものはありますか?
C言語・C++・C#
-
12
C言語で16進数文字列から16進数数値への変換
C言語・C++・C#
-
13
メッセージキューのスレッド間通信
UNIX・Linux
-
14
fopne で失敗する原因
C言語・C++・C#
-
15
#include <Windows.h>というヘッダファイルについて
C言語・C++・C#
-
16
C言語 配列の長さの上限
C言語・C++・C#
-
17
#defineの定数を文字列として読み込む
C言語・C++・C#
-
18
C言語のプログラム中に使うsystem()関数に変数を使う場合
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
#define _CRT_SECURE_NO_WARNIN...
-
複数桁10進数の*桁目だけを抽出...
-
(int *)の意味
-
卒業研究でよく分からないとこ...
-
ラップ関数とはどんなものですか?
-
if と配列の組み合わせ
-
C言語初心者です、、、お助けく...
-
【C++】関数ポインタの使い方
-
アスタリスクで正方形
-
インライン展開されているか確...
-
構造体の勉強中です 合計点の高...
-
異なる文字列のマッチングを、D...
-
数字列を3桁ごとにカンマで区切...
-
C言語 配列と関数の練習問題
-
C言語で三目並べをするプログラ...
-
入力を待たずにstdinの監視をし...
-
ファイルから読みこむ方法
-
課題でつまってます・・・
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報