Perlで別のプロセスのデータへの随時アクセスは可能でしょうか。


Perlに関する質問です。
バックグラウンドでプロセスを動かしておいてデータを取得し(ログファイルを読み続けデータをハッシュに格納、等)、必要に応じて別のプロセスからデータを読み込むことは可能でしょうか(各種レポート作成のコマンドを作るイメージ)。
できればデータをDBに格納、中間ファイル生成等は行わずプロセス間で直接データをやりとりしたいと思っております。
またもし中間物が必要な場合でも、なるべく書き込みアクセスを減らしたいです。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/10/11 07:25:04
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154

ポイント150pt

データをやり取りするふたつのプロセスは、両方とも Perl なのでしょうか?


OS が何だ、とか、をあまり考えたくないのであれば、Socket で通信しちゃうのが、てっとり早いと思います。

http://perldoc.jp/docs/perl/5.8.8/perlipc.pod#Internet32TCP32Clients32and32Servers


「バックグラウンドでプロセスを動かしておいて...」の方が Server になって、

「必要に応じて別のプロセスから...」の方が Client になります。


ハッシュなどの構造を持ったデータをやり取りするためには、「シリアライズ」という、もう一手間を加える必要があります。

http://perldoc.jp/docs/modules/Storable-2.05/Storable.pod

http://perldoc.jp/docs/modules/Thread-Serialize-0.07/Serialize.pod

その他の回答1件)

id:Jupiter2100 No.1

回答回数444ベストアンサー獲得回数74

ポイント150pt

OSが何か分からないので、WindowsとLinuxに場合分けして回答します。


Windowsの場合

相手のプロセスがDDEやOLEをサポートしていれば、それを利用できます。


Linuxの場合

相手のプロセスがメッセージキューやソケットをサポートしていれば、それを利用できます。


受け渡しデータをDBに格納するということでしたら、単に両方のプロセスでDBを共有すれば良いだけです。

id:a-kuma3 No.2

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント150pt

データをやり取りするふたつのプロセスは、両方とも Perl なのでしょうか?


OS が何だ、とか、をあまり考えたくないのであれば、Socket で通信しちゃうのが、てっとり早いと思います。

http://perldoc.jp/docs/perl/5.8.8/perlipc.pod#Internet32TCP32Clients32and32Servers


「バックグラウンドでプロセスを動かしておいて...」の方が Server になって、

「必要に応じて別のプロセスから...」の方が Client になります。


ハッシュなどの構造を持ったデータをやり取りするためには、「シリアライズ」という、もう一手間を加える必要があります。

http://perldoc.jp/docs/modules/Storable-2.05/Storable.pod

http://perldoc.jp/docs/modules/Thread-Serialize-0.07/Serialize.pod

  • id:kyo_bracer
    皆様ありがとうございます。

    追記になりますが、プロセスは両側ともPerlで、OSはLinuxを想定しています。

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

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

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

回答リクエストを送信したユーザーはいません