none
親プロセスで呼び出した子プロセスが終了したとき制御を親プロセスに戻す方法を教えてください RRS feed

  • 質問


  • プログラムのローダーを作りたいと思っています。

    親プロセスで、_execv 関数で子プロセスを呼び出し実行すると
    子プロセスが終了したとき、親プロセスにコントロールが戻ってきません。
    どのような関数を使用すると親プロセスに制御を戻せるのでしょうか?
    使用環境は
    Microsoft Visual C++ 2005 Express Edition
    CRL   Windows フォームアプリケーション
    です。

     

    昔の大型コンピュータを勉強していたもので、言葉づかいが正確でないかもしれません。

    よろしくお願いします。

    2007年5月14日 7:17

回答

  • chack - Akira Inoueさん 早速のレスありがとうございました。

    教えられた方法で試しました。

    親プロセスから子プロセスを起動とパラメータも渡すことができ、

    また、子プロセスからのリターンコードも親プロセスに返すこともできました。

     

    悩んでいることが、一発で解決しました。まことにありがとうございました。

     

    2007年5月14日 23:43

すべての返信

  •  c_beginner さんからの引用

    親プロセスで、_execv 関数で子プロセスを呼び出し実行すると

    子プロセスが終了したとき、親プロセスにコントロールが戻ってきません。

     

    Windows フォームアプリケーションでしたら、以下のコードで試してみてはいかがでしょうか。

    子プロセスが終了するまで、親の実行はブロックしたいんですよね?

     

    Code Snippet

    using namespace System::Windows::Forms;

    using namespace System::Diagnostics;

     

    void OnStartProcess()

    {

      try

      {

        ProcessStartInfo^ startInfo = gcnew ProcessStartInfo("hoge.exe");

        Process^ p = Process::Start(startInfo);

     

        p->WaitForExit();  // 起動したプロセスが終了するまで待つ

      }

      catch (Exception^ ex)

      {

        MessageBox::Show(ex->ToString());

        return;

      }

     

      MessageBox::Show("終了しました");

    }

     

     

    2007年5月14日 8:08
  • chack - Akira Inoueさん 早速のレスありがとうございました。

    教えられた方法で試しました。

    親プロセスから子プロセスを起動とパラメータも渡すことができ、

    また、子プロセスからのリターンコードも親プロセスに返すこともできました。

     

    悩んでいることが、一発で解決しました。まことにありがとうございました。

     

    2007年5月14日 23:43