• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:外部プログラムを実行させ、復帰値を取得したい)

外部プログラムを実行させ、復帰値を取得する方法

このQ&Aのポイント
  • Cで作成された外部プログラム(Exe)にパラメータ付で実行させ、その復帰値を取得する方法を調べています。
  • _spawn系関数を使用すると考えられますが、詳細がよく理解できません。
  • 再度MSDN等のサンプルを解析しながら、外部プログラムの実行と復帰値の取得について理解を深めたいと思います。

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

  • ベストアンサー
  • akkun2k
  • ベストアンサー率71% (5/7)
回答No.1

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 を選択します。

参考URL:
http://www.microsoft.com/japan/developer/library/

関連するQ&A