68user's page 掲示板

Prev< No. 1005〜1010> Next  [最新発言に戻る] [過去ログ一覧]
No. 1005 # Netboy 2000/07/25 (火) 04:54:43
>Netboy さんは、ノンブロッキングの flock なら OK、
>という立場ですよね?
はい.
動作環境を知っていて,使えると判断した用途にはOKです.
例えば常駐動作のサーバー用のスクリプトなんかにはいいですよね.

>それとも 両方価値がない、という話ですか?
いいえ,fcntlは意味があると思います.
POSIX準拠(?)+NFS対応だそうですし.
あれはOSの内部操作をそのまま出してくれているんですよね?
でもWin環境で互換性が無いので,あまり使いません.

>> flockして成功したプロセスが無限ループに入ったとき,
>という状況って、起こり得ますか? (現象事態は
>root が SIGSTOP 送れば容易に発生しますが)
次のようなものです.

- スクリプトの単なるバグ
- 作成中のスクリプトのテスト時
- 予期しないデータを与えられたスクリプト
- Perlインタプリタがコケたとき.OSリソース逼迫下.
- インタプリタのバグ.
- Apacheの設定ミス,管理者の不注意な設定変更.
- クラッキングを受けたサーバー

>Netboy さんは、どういうプログラムを想定しておられます?
>ちなみに僕が考えたのは、カウンタとか web BBS とかです。
私も同じです.
スクリプトのバグでは,機種/環境依存文字の訂正で
ある予期しない文字列のとき置換操作が止まらなくなる...など.

>僕の環境では「まともにロックできない」というのは
>経験したことはありません
それは68userさんだから(笑).
普通の人は下で書いたスクリプトみたいな感じです.
NFSを使っているプロバイダの場合,もっと状況は複雑になります.

>それと flock は、symlink・mkdir よりは速かったです。
う〜ん,負荷が掛かった時なんです,問題は.
デッドロックの自動検出と,flockの解除のための
pidの保存操作や予防措置も含めてください.

MMX233+FreeBSDで1000個の掲示板が同時動作で平均待ちプロセスが2〜4個
の状況('97のテレホ時)でflockを使うかどうか,です.

>訳の分からない排他制御手段を考える人
いや,いいんじゃないですか.誰もが通る出発点だと思います.
68userさんだって,miniBBSのアレとか,ほら,悪い思い出(笑).
混雑時の実用性や設置性を検証すると,面白いことになります.

No. 1006 # ちゃいぱ [URL] 2000/07/25 (火) 15:19:18
はじめに、flockについて質問した者です。

CGIをダウンロードした人にプロバイダ来たメールで、
やはり、「NFSがらみで、flockが利用不可能な状態」とのことでした。
CGIの方は、WIN95も考慮して、ロックファイルの有無で対処いたしました。

話は、変りますが、DNSサーバーについて知識として教えて下さい。
rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
DNSサーバーとやり取りをしているのですか?
DNSサーバーはhttpみたいなデーモンが動いているですか?(私の買った本には、この辺書いていなかった)

ちょっと、気になったので、よろしくお願い致します。

No. 1007 # 68user 2000/07/25 (火) 16:27:35
flock の件は後程。

> rlogin,ftp,telnetなどで、ホスト名を指定した時に、どのようにして、
> DNSサーバーとやり取りをしているのですか?
rlogin/ftp/telnet などは、ユーザからホスト名を受け取ると
gethostbyname(3) などを使って、ホスト名から IP アドレスを
得ようとします。

gethostbyname の内部では、ソケットを使って DNS サーバに
アクセスします。で、DNS サーバは UDP の port 42 を
listen していて (UDP だから listen という表現は変?)、
クライアントからの問い合わせに応じて IP アドレスを
教えたり、他の DNS サーバに問い合わせたり、見付から
ないよと答えたりします。

こういう問い合わせを行う DNS クライアント (この例では
gethostbyname) のことを resolver と言います。resolver は
概念的なもので、問い合わせを一手に引き受ける resolver
サーバのようなものがあるわけではありません。ただのライブラリです。
なので、自分で外部の 42/udp にアクセスする DNS クライアントを
書く事もできます。

> DNSサーバーはhttpみたいなデーモンが動いているですか?
UNIX 界で DNS サーバとして有名なのは bind です。
プログラム名は named。
# apache と httpd の関係と似ています。

No. 1008 # 68user 2000/07/25 (火) 16:57:08
> こういう問い合わせを行う DNS クライアント (この例では
> gethostbyname) のことを resolver と言います。
いや、違うか。

res_query, res_search, res_mkquery, res_send, res_init,
dn_comp などの DNS サーバへ問い合わせを行うライブラリ
関数群のことを resolver といいます。gethostbyname などは
これらの関数を孫請けとして呼んでいます、かな。
# See resolver(3).

No. 1009 # ちゃいぱ [URL] 2000/07/25 (火) 17:01:14
回答ありがとうございます。

では、DNSクライアントとnamedデーモンが、
UDPプロトコルでportの42番でやり取りすると理解してよろしいですね。

すっきりしました。
ありがとうございました。

No. 1010 # gongo [E-mail] 2000/07/25 (火) 23:48:36
はじめまして、gongoと申します。
いきなりで申し訳ありませんが質問があります。
私はXアプリケーションの勉強を始めたばかりなのですが
XライブラリとXツールキットを用いたプログラムを書こうとして
行き詰まってしまいました。
と言いますのは、例えばXツールキットを用いて表示させた窓に
Xライブラリを用いて直線を引いたりする方法がわかりません。

XDrawLine(XtDisplay(w),XtWindow(w),gc,x1,y1,x2,y2);

といった感じでプログラムの中に書き込みますとコンパイルは
できるのですが、実行させるときにXDrawLineのところで
Segmentation faultで止まってしまいます。
本もいろいろと読みましたがどうにもうまくいきません。

作成途中のプログラムは以下のところにあります。
http://www.din.or.jp/~gongo/xtshirt.c(本体)
http://www.din.or.jp/~gongo/color.dat(色の数値)
どうか宜しくお願い致します。

Prev< No. 1005〜1010> Next  [最新発言に戻る] [過去ログ一覧]