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


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

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/10/04 07:20:37
  • 終了:2011/10/11 07:25:04

ベストアンサー

id:a-kuma3 No.2

a-kuma3回答回数4563ベストアンサー獲得回数19082011/10/04 11:29:35

ポイント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ベストアンサー獲得回数742011/10/04 07:43:31

ポイント150pt

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


Windowsの場合

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


Linuxの場合

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


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

id:a-kuma3 No.2

a-kuma3回答回数4563ベストアンサー獲得回数19082011/10/04 11:29:35ここでベストアンサー

ポイント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を想定しています。

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

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

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

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