List of ./lock/flock.cgi

Fri Mar 29 22:15:11 2024

戻る

TEXTAREA で表示(カット&ペーストむき)

#!/usr/bin/perl
#
# flock.cgi
#   1998/08/20 Ver.0.00
#   1998/08/24 Ver.0.01
#   1998/09/30 Ver.0.02
#   2008/08/16 Ver.0.03
#
# (C) 1998 がま <gama@mvg.biglobe.ne.jp>

$LOCK_EX = 2;                       # 排他的にロック
#/////////////////////////////////////////////////////
$ctr='ctr.dat';
$dir='./data/';
$ext='.dat';
#/////////////////////////////////////////////////////
{
    $test = $ENV{'QUERY_STRING'};

    # 制御用カウンタへ加算
    open(CTR,"+<$ctr");
    flock(CTR,$LOCK_EX);            # ロック
    $n=<CTR> + 1;
    seek(CTR, 0, 0);
    printf(CTR "%d", $n);
    close(CTR);

    # 実験用カウンタ
    $ctrdat=$dir.$n.$ext;           # 新しい実験用カウンタファイル名
    open(CTR,">$ctrdat");
    printf(CTR '0');                # 0 を書き込む
    close(CTR);

    $m=$n-20;
    unlink($dir.$m.$ext);           # 古いのを削除 -20
    $m=$n-40;
    unlink($dir.$m.$ext);           # 念のため削除 -40

    #/////////////////////////////////////////////////////
    $|=1;
    print "Content-type: text/html\n\n";
    print <<END;
        <HTML>
        <HEAD>
        <TITLE>flock の動作 -- 実験 $test</TITLE>
        </HEAD>
        <FRAMESET COLS="50%,50%">
          <FRAME SRC="flocks.cgi?${test}&${n}" NAME="test1" SCROLLING="auto">
          <FRAME SRC="flocks.cgi?${test}&${n}" NAME="test2" SCROLLING="auto">
        </FRAMESET>
        <NOFRAME>
            このページは、フレームが、表\示できるブラウザでごらんください。
        </NOFRAME>
        </HTML>
END
    exit;
}

戻る