[kansaipm] Socketについて教えてください

yuhashimoto yuhashimoto at hi-ho.ne.jp
Tue Dec 25 21:47:30 CST 2001


> 三嶋@難波です。
> きっと、Perlで書かれたCGIプログラムがクライアントとして、
> スタンドアロンのサーバへconnect しに行くという図式なのでしょう。
おっしゃるとおりです。apacheにアクセスしたブラウザが起動するnobodyが、
動かすcgiです。

> >   # ところで select(2) って必要でしたっけ? (^^;
> 
> きっと、fork せずに、1個のプロセスで複数のソケットを管理して、
> とっかえひっかえ使おうとしているのでしょう。
> それなら必要ですよね、select(2)。

selectかforkか二者択一ってな感じで本にかいてありましたので

三嶋さんwrote
> えっと、子プロセスが終わると、SIGCHLDのシグナルは自動的に発生するん
> でしたっけ。親のほうで、シグナルハンドラを用意すれば良いんですよね。

りゅうちさんwrote
>  fork(2) を使って あるクライアントからの接続を子に任せて、親は次から次へ
>と来る要求を処理するために accept(2)すればいいです。
>  子が終わるときは 親にシグナルを送って、親がシグナルを受けたら wait して
>やればいいはずです。

waitで待つと、acceptで待てないというパラドックスにおちいっていたんですが
これで、解決しました。

三嶋さん、りゅうちさん、ありがとうございます。
forkを使ってやってみます。

> ところで橋本@神戸さん、具体的に何をするプログラムを
> 作ろうとされているのでしょうか。
基幹業務に使う、あるデータベースへのアクセスが、ODBCでは、何ユーザでもいい
のですが、何故か、サーバで動くC言語で提供されたアクセス関数は、1ユーザしか
使えないので、1つの
サーバプログラム(=1ユーザ)で、複数のプログラムからのデータベースへのアク
セスを一手に引きうけちゃおうというプログラムです。

とりあえず、メッセージキュー版は作りましたが、信頼性の問題から、ソケット版
だろうということで.

perlで作ったCOBOLの各命令に対応する関数、動いています。
販売管理システム、ジョブ数20、プログラム数50本ぐらいで、JCL機能もサポート
しました。近く、公開できると思います。
このままでは、使えないので、とりあえず、考え方の参考にしかならないと思います
けれど




More information about the Kansai-pm mailing list