Rubyのプログラムをバッチファイルで回している状態で、別のPCからの何らかのアクションによって、回しているプログラムの処理を変えるようなことって、どうやったらできるのでしょうか? もしくはできないのでしょうか?


例えば、別のPCがキーボードで『A』と打つと、回っているRubyプログラムのある変数Keyが Key = A になり、条件分岐できるとか…ということです。

なんとなく思いつくのは、別のPCはRubyを回しているPCのあるcgiを叩き、cgiが叩かれるとバッチファイルか、Rubyプログラムが書きかえられて処理が変わる…というものなんですが、こういうことは可能でしょうか? もしくはもっとスマートなやり方があれば教えていただきたいです。よろしくお願い致します。

回答の条件
  • 1人2回まで
  • 登録:2009/11/11 14:13:10
  • 終了:2009/11/16 16:13:29

ベストアンサー

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/11/11 15:39:00

ポイント65pt

Rubyに限った話ではないですが、ホストをまたいでプロセス間通信を行うのに一番手っ取り早いのは、ソケット通信をしてしまうことだと思います。

参考:http://www.ruby-lang.org/ja/man/html/socket.html


ただ、バッチファイルから起動とのことなので、常にそのRubyで記述したプログラムがいる保障はないと思われます。

とすると、

このプログラム自体を常駐させておくような形にして、サーバソケットを開いておく

という形に変更するか、

通知を受け取るだけのプログラムを作成し、こちらを常駐させておき、別ホストから何らかの通知が来た場合は設定ファイルを変更する。

バッチファイルから起動されたスクリプトは、この設定ファイルから情報を取得して、動作を変更する

という形にするかでしょうか。

この上で、別のマシン上の何らかのイベントが起きた際に通知してあげるようにすればよいかと思います。


なお、後者を選択した場合に、この通知を受け取るだけのプログラムにApacheなどを使えば、質問でおっしゃっているCGIでというのと同じような形になるかと思います。

id:RESTfulJapan

なるほど! 大変良く分かりました。

ありがとうございます!

一応、もう少し回答を受け付けてみます。

2009/11/11 17:00:24

その他の回答(1件)

id:tdoi No.1

tdoi回答回数174ベストアンサー獲得回数752009/11/11 15:39:00ここでベストアンサー

ポイント65pt

Rubyに限った話ではないですが、ホストをまたいでプロセス間通信を行うのに一番手っ取り早いのは、ソケット通信をしてしまうことだと思います。

参考:http://www.ruby-lang.org/ja/man/html/socket.html


ただ、バッチファイルから起動とのことなので、常にそのRubyで記述したプログラムがいる保障はないと思われます。

とすると、

このプログラム自体を常駐させておくような形にして、サーバソケットを開いておく

という形に変更するか、

通知を受け取るだけのプログラムを作成し、こちらを常駐させておき、別ホストから何らかの通知が来た場合は設定ファイルを変更する。

バッチファイルから起動されたスクリプトは、この設定ファイルから情報を取得して、動作を変更する

という形にするかでしょうか。

この上で、別のマシン上の何らかのイベントが起きた際に通知してあげるようにすればよいかと思います。


なお、後者を選択した場合に、この通知を受け取るだけのプログラムにApacheなどを使えば、質問でおっしゃっているCGIでというのと同じような形になるかと思います。

id:RESTfulJapan

なるほど! 大変良く分かりました。

ありがとうございます!

一応、もう少し回答を受け付けてみます。

2009/11/11 17:00:24
id:azumi1975 No.2

azumi1975回答回数337ベストアンサー獲得回数162009/11/11 21:45:12

ポイント5pt

a.cgi ->ループ

b.cgi ->停止

リネームして、aとbをかえる

ループは、cgiの外側でやってることが前提

id:RESTfulJapan

すみません、よく理解できません……。

2009/11/16 16:12:31

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

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

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

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

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