OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

外部プログラムを実行させ、復帰値を取得したい

  • 困ってます
  • 質問No.218275
  • 閲覧数446
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 32% (60/182)

いつもお世話になっています。

現在はCでdllを作成していて、Cで作成された外部プログラム(Exe)にパラメータ付で実行させ、その外部プログラムから出力される復帰値を取得したいのです。

(図)
char *Prm;

開始 ⇒ <<DLL,Prm>> → <<Prm,EXE>>
     復帰値を取得 ←  復帰値


自分なりに調べた(MSDN等)のは_spawn系関数を使用するのではと感じているのですが、あまりよく理解できないでいます。

大変お手数ですが、どうかよろしくお願いします。

その間、再度MSDN等のサンプルを解析しながら理解しようと試みたいと思います。
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1
レベル6

ベストアンサー率 71% (5/7)

DLLで利用するということはWindowsですね。
CreateProcess() とGetExitCodeProcess()を利用しては
どうでしょうか。

---------------------------------------------------
STARTUPINFO si;
PROCESS_INFORMATION pi;
DWORD dwErrorCode;
DWORD dwExitCode;
char aProcess[MAX_PATH];

/* 初期化 */
ZeroMemory(&si,sizeof(STARTUPINFO));
ZeroMemory(&pi,sizeof(PROCESS_INFORMATION));

/* 構造体のサイズ */
si.cb = sizeof(STARTUPINFO);
/* 起動条件 */
si.dwFlags =
STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
/* ウィンドウ表示しない */
si.wShowWindow= SW_HIDE;

/* 起動コマンド+引数を編集 */
sprintf(aProcess, "%s %s", コマンド名, パラメータ);

/* プロセス起動 */
if (!CreateProcess(NULL,aProcess,
NULL,NULL,TRUE,0,NULL,NULL,
&si,&pi)) {
/* スレッド操作はしないのでスレッドハンドルを閉じる */
CloseHandle( pi.hThread );

/* プロセスが終了するまでまつ */
WaitForSingleObject( pi.hProcess, INFINITE );

/* プロセスの終了コードを取得する */
GetExitCodeProcess(pi.hProcess,&dwExitCode);

/* プロセスハンドルを閉じる */
CloseHandle( pi.hProcess );
}
else {
/* エラー処理 */
dwErrorCode = GetLastError();

<省略>

}

---------------------------------------------------

なお、MSDNであればお手元の物か、インターネット上であれば参考URLに詳細があります。

左に表示されるツリーから、

プラットフォームSDKドキュメント
プラットフォームSDKドキュメント(日本語)
ベースサービス
DLL / プロセス / スレッド
プロセス / スレッド
リファレンス
関数
CreateProcess

を選択します。
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ