みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Cで他のプログラムを起動させる命令

C言語でプログラムを作っているのですが、他のプログラムを起動させる命令が分かりません。そのプログラムが起動し、処理が終わった後は起動させたプログラムの作業に戻るようにしたいです。
後、引数もプログラムに渡したいです。
何かいい命令を知っている方はお願いします。

投稿日時 - 2007-05-19 13:52:22

QNo.3012655

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

fork & exec - wait で実現できます。大まかな流れは以下のとおりです。

  pid_t pid;
  int status;
  char *prm[ NUM ];

  /* プロセスを複製する(自分自身の分身を作る) */
  pid = fork();
  if( pid == 0 ){
    /* 子プロセスのルートはこっち
    * プログラムのパスとパラメータを設定する */
    prm[ 0 ] = programname;
    prm[ 1 ] = param1;
    prm[ 2 ] = param2;
    :
    prm[ n ] = NULL;
    /* プログラムを実行 */
    execv( programname, prm );
  }
  else if( pid > 0 ){
    /* 親プロセス(元のプロセス)のルートはこっち
    * 子プロセスの終了を待つ
    * 子プロセスが実行した exit() に与えた値が status に設定される
    * ただし、そのままの値ではないので注意 */
    wait( &status );
  }
  else{
   perror( "fork" );
  }

execv と wait は派生した別のものがあります。基本は同じですが目的によって
使い分けてください。

投稿日時 - 2007-05-19 14:25:45

あなたにオススメの質問