あなたが知りたい内容はだいたい分かった気がします。
悪いことは言いませんから、まずは、測定プログラムを CGI として実装することを
薦めます。
馬鹿みたいに大きなプログラムじゃない限り、ディスクからのロードなんてたいした
オーバヘッドにはなりません。
まずは、CGI として実装してみて、それでも速度に不満があるようであれば、そこで
はじめて、そのCGI を、情報収集デーモンにすれば良いでしょう。
後々、プログラムを分離することを念頭において CGI をつくるなら、情報の収集と、
それの出力を別関数として実装しておくことが大事です。
CGI の main() がこんな感じになるように。
int main()
{
収集内容 data;
data = 情報収集関数(必要な引数);
情報の出力(data, その他必要な引数);
return 0;
}
後で、情報収集関数を別プロセスに移すときには、この関数がそのまま使えますし、
この部分がプロセス間通信になるだけですから。
★別プロセスに情報収集を分離したときの CGI
int main()
{
収集内容 data;
収集プロセスの起動取得(必要な引数);
data = 収集を待って情報を取得関数(必要な引数);
情報の出力(data, その他必要な引数);
return 0;
}
★情報収集プロセスの main()
int main()
{
デーモンになるための作法が幾つか…
while(起動の待合わせ) {
pid_t pid;
if ((pid = fork()) == 0) {
収集内容 data;
data = 情報収集関数(必要な引数);
CGIへ収集情報を送信関数(data);
return 0;
}
}
return 0;
}
という感じになります。
データの待ち合わせをして、ある程度の情報をやり取りする場合のプロセス間通信には
メッセージキューが向いてます。msgget(), msgsnd(), msgrcv() といったシステム
コールを使います。
> 基礎が全くわかっておりません。簡単な例で結構ですのでお教え下さい。
> 本来であれば、この程度の人間がご質問すること自体間違っていることは
> 承知しております。
ここは、分からない人が質問するサイトですから、質問すること自体は間違ってない
んですが、それなりに書くことがあるので、「簡単な例」といわれても書くのが
面倒なんです (^^;
お礼
どうも有難う御座いました。大変参考になりました。 又、質問した時にはお助け下さい。<-すぐ質問してしまうかも知れませんが。