新規記事投稿 フォロー記事投稿 記事のキャンセル
From: にあ <nir@mxa.meshnet.or.jp>
Subject: Re: 質問:システムエラーについて
Date: 1998/01/31 00:58:38
Reference: mesh.forum.3/00057

1月30日に、Radcliffeさんは書きました。

>>もし、「ロック出来ません」と言うエラーならあり得ます。
>受け取ったメールでは、「書き込みできません」というエラーだった
>らしいのですが……
>
え゛、「ファイルに書き込めません」のエラーだったのですか?

書き込めなかったのはどのファイルだったのでしょうか? って言っても、
正常稼動状態ではcontentsと言うことはまず考えられないので、記事ファイルが
書き込めなかったのでしょうが、それは非常にまずい状態ですね。

おそらく先の投稿で記事ファイルが出来て、そのファイルのパーミッションが
読み込み専用に変えられた後(つまり先の記事が投稿完了した後)に同じ番号で
次の記事を書こうとしてエラーになっているのでしょうが、そう言うことが
起きないようにファイルロックで排他処理をしているので、記事の書き込み
エラーが起きたという事はファイルロックの処理が正常に出来ていないことを
暗示しています。

それも、ロック出来るかどうかチェックしている所を素通りしているところから
ロック出来ていないのにロック出来ているとシステムが答えている可能性があります。

# うーむ、本当にS号機のロック機構は直ったんだろうか? (^^;;


...と、ここまで書いて、はたと気が付いたのですが、S号機ってHP-UXですよね、
「うぇぶ会議室」のスクリプトはデフォルト状態では/usr/local/bin/perlを
使うようになっていますが、biglobeの解説ではこれはperl4.019と書いてあります。

ところがperl4.xではHP-UXの様にOSとしてflock()を持たない場合、perlのflock()を
呼ぶと「インプリメントされていませんエラー」になるはずです。perl5.xではlockf()で
flock()をエミュレートするので使えます。と言うことでS号機のperlのヴァージョンは
何なのか? と言うのが分からなくなりました。

# HP-UX10.xになって、OSレヴェルでflock()をサポートしたのかと思って
# 手元のHP-UX10.20(まだインストールしてないが買ってはある(笑))の
# CDオンラインマニュアルを検索したけど出てこなかったし...

すいませんが、以下の簡単なCGIを実行してみていただけませんか?
単にOSとperlのヴァージョンを表示するだけですが。

#!/bin/sh echo "Content-Type: text/plain" echo echo "-----" uname -a echo "-----" /usr/local/bin/perl -v echo "-----" /usr/local/bin/perl5 -v echo "-----" exit 0
# ちなみに、1号機の/usr/local/bin/perlはアナウンスとは違って4.036で # あることが分かります。perl5は相変わらず5.001無印だけど。(笑)