秋の夜長に、たまには技術のことについて考えてみる。

前にやろうと思ってて、結局忘れてたものについてやってみた。
ことの発端はファイルリードとライトが重なったときにどうなるか、
ということからだった。
「一瞬だからなんとかなるんじゃないですかねぇー」という適当なところから始まった。
そこから宿題が出た。

最初の説明がちょっとおかしいかな・・・
「a」というファイルを「b」というファイル名にリネームするときに、
(bというファイルは存在している)bにリードが走るとどうなるのか。

こんなこと閉鎖された自宅サーバなんかじゃ起きようがないもんなぁ・・・

そこから、
少し前に話があった、
perlスクリプトでfopenしてるときに、ファイルになんかあったらどうなるかってところともつながってくるかとおもったりして、

簡単なスクリプト作ってみた。
ファイルを開いて、
内容を読んで1行ずつ表示するっていう簡単なもの、

表示する間にsleepをはさんどいて、その間にファイルを消してやろうと・・・

さっそく実行。

$ ./fopen.pl
aaaa
なんか入力してください。k
bbbb
なんか入力してください。o(このへんでファイルを削除)
ccc
なんか入力してください。n

うん、
まぁ、最後まででた。これは良いと思って次に削除のやり方を変えてみた。

shredで削除

$ shred -u text
ってのを途中でやってみる。

・・・・・・・・・・・・・

$ ./fopen.pl
aaaa
なんか入力してください。a
bbbb
なんか入力してください。b(ここで$ shred -u text)
ccc
なんか入力してください。c

あれ・・・、
こう出るもんなんかな・・・
最後は失敗してほしかったんだけど・・・

あれ。。。

今度は
$ shred text
でやってみよ、そしたらファイルだけshredが壊してくれる。

$ ./fopen.pl
aaaa
なんか入力してください。a
bbbb
なんか入力してください。b
cccc
なんか入力してください。c
G       ・イ・ヌeu、サ}Q:クsZ琩コ・
む・・・、
最後文字化けた・・・
あれー・・・

shredのほうについてはなんか起きてほしかったんだけど・・・

fopenで全部読み込んでるのか・・・どうなのか・・・

あまりにも大きいファイルを使ってやってみればいいか・・・、
と思ったけど。
ちょっと、mysqlの話してくる。

コメント

このブログの人気の投稿

有料洗車

Macbook Air 2012 買いました