人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: RESTfulJapan
●カテゴリ:コンピュータ インターネット
✍キーワード:CGI Key pc Ruby アクション
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● tdoi
●65ポイント ベストアンサー

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

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


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

とすると、

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

という形に変更するか、

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

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

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

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


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

◎質問者からの返答

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

ありがとうございます!

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


2 ● azumi1975
●5ポイント

a.cgi ->ループ

b.cgi ->停止

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

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

◎質問者からの返答

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ