- 締切済み
mkdirでのファイルロック
私はCGIの経験がほとんどなく超初心者です。下記のようなファイルを作りましたがファイルのロックをしなければデータが書き込まれないようなので困ってしまっています。flockはつかえないようなのでmkdirでロックをかけたいのです。 #! /usr/local/bin/perl $| = 1; require './jcode.pl'; require './mimew.pl'; require './cgi-lib.pl'; &ReadParse(*FORM); $thisfile = 'mother'; $countfile = './mother.txt'; $predatadir ='./mom'; $fromname = "sabra net"; $fromemail = '***@****.co.jp'; $act = $FORM{'act'}; #### main始動 #### if($act eq "indata"){ &getnumber; &datamod; &inputDB; &mailsend; &view; } else{ &datamod; &kakunin; } #### main終了 #### #### メッセージ番号設定 #### sub getnumber { open(COUNTER,"$countfile") || &error('countfileが開けない'); $this_num = <COUNTER>; close(COUNTER); $this_num++; open(COUNTER,">$countfile") || &error('countfileに書きこめない'); print COUNTER "$this_num"; close(COUNTER); if( length($this_num) == 1 ){ $this_num ="000000" . $this_num; } elsif( length($this_num) == 2 ){ $this_num ="00000" . $this_num; } } #### datafileへ入力 #### sub inputDB { $datafile = "$predatadir/userdata01.csv"; open(DB,">>$datafile") || &error('datafileに書きこめない'); print DB "$yourname,$email\n"; close(DB); }
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- estea
- ベストアンサー率44% (39/87)
「ファイルのロックをしなければデータが書き込まれない」 ってのがよくわからんが、もしそういう制限が可能だとしても mkdir でファイルロックかけても書き込めるとは思えないが・・・ そのサービスの管理者はどういってるん? mkdir したら書き込めるっていってる?「書き込まれない"よう"」ってどういうこと? そもそも open 自体が禁止されてる可能性はあるなぁ・・・(ロックしても無意味)
補足
サーバー側はカウントファイルの操作時、データファイルへの出力時に、ファイルロックの処理がされていないのでファイルロックの処理をしてほしいとのことでした。それでflockで書いてみたんですがflockはこのサーバでは使えないとのことでmkdirを使ってくださいとのことでしたが調べてみてもよくわかりませんでした。