【プログラミング/Ruby】Windows環境上(Win2000)で、Rubyから実行ファイル(exe形式)に引数を渡して呼び出すにはどうすれば良いでしょうか。できれば簡単なサンプルを付して教えて下さい。お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/08 03:41:46
  • 終了:--

回答(2件)

id:dplusplus No.1

dplusplus回答回数1ベストアンサー獲得回数02005/03/08 05:11:24

ポイント100pt

http://www.ruby-lang.org/ja/man/?cmd=view;name=%C1%C8%A4%DF%B9%F...

組み込み関数 - Rubyリファレンスマニュアル

URLは公式のRubyリファレンスWikiです。

Rubyには外部の関数を呼び出す組み込み関数execが存在します。

サンプルは以下のような感じです。

1.適当な外部プログラムを調達します。ここでは引数を表示するCを使ったプログラムを作成することにしてみます。(コンパイルしてarg.exeとしておく)

#include <stdio.h>

int main(int argc, char *argv[]){

  int i;

  for(i=1; i<argc; ++i)

    printf("argv[%d] #=> %s¥n", i, argv[i]);

  return 0;

}

実行例:

arg.exe foo bar

argv[1] #=> "foo"

argv[2] #=> "bar"

2. rubyスクリプトからarg.exeを起動します。(invoke.rbとする)

exec("arg.exe", "hoge", "moge")

実行例:

ruby invoke.rb

argv[1] #=> "hoge"

argv[2] #=> "moge"

外部プログラムのパスは相対パス、絶対パス、環境変数PATHから探す、のどれでも使えるようです。

また、パスの区切り文字は/でも¥でもよいみたいです。(後者の場合ちゃんとエスケープすること)

id:polyamid

分かりやすい回答、ありがとうございます。

2005/03/08 09:11:09
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982005/03/08 06:42:12

ポイント100pt

基本的には

system(’c:¥hoge space¥uge.exe arg1 arg2’)

というように記述しますが、

中に スペースが入っている場合は、工夫が必要です。

id:polyamid

おお、別パターンの実現方法。ありがとうございます^^

回答1,2での挙動の違い等は自分で調べてみることにします。

お二人とも、ありがとうございました!

2005/03/08 09:14:05

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません