![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
Windows 7 + Active perlで何か書き込んでいる時にアップデートなどでPCを再起動すると、書き込んでいるテキストファイル(1KB~10MB程度)が壊れることがある様な気がします。あまり再現性が無くこれとは限らないのですが、時々真っ白のファイルができています。
かといって、全てのperlプログラムが書き込み状態にあるか否かを把握するのも面倒です。そもそも、条件に応じて書き込みしているため不定期でいつ書き込んでいるかもよく分かりません。
個人利用のため、その時に取得したデータが少し壊れる程度は諦めが付くのですが、大量に蓄積したデータまで破損するのは辛く避けたいです。
できれば簡易な方法でファイルが壊れないようにする方法はありますか?
殆ど使ったことが無くこういった雑な使い方でも良いのか分かりませんがSQLなど使うと良いのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
・Perlで出力命令を実行した( print 等を実行した)
ということと
・実際にファイルにデータが書き込まれる
ということは、必ずしも一致しません。
ディスクへのアクセスは、コンピュータ内部のアクセス(メモリ等)に比べて、桁違いに時間がかかります。
そのため、その時間を有効に使うために、いろんな工夫をしています。
例えば、毎回書き込まずに内容をメモリに保存しておいて、後でまとめて書き込む、等。
通常、プログラムが正常に動作すると、ファイルへの書き込みも正常に完了します。
ですが、シャットダウンのような強制終了になると、ファイルの書き込みが完了しないこともあります。
管理情報の書き込みにしっぱいして、ファイルサイズが0になることも有り得るでしょう。
対策は、そのような自体でもファイル保存が完了するようにすることです。
○ UNIX系OSでは、trap を使って強制終了を検知する、というのがあります。
Windowsではどうなるか、確認していません
○ファイルを小まめの open/ close したり flush することで、ファイルに強制的に書き込む
○データベースや、Windowsのログサービス等、確実に保存されるようなものを使う
回答いただきありがとうございます。
Unixなどレンタルサーバ以外ではお目にかからないのですが、その割にWindowsの情報が無く困っています。Perl動作中に右上の×をクリックしたら多分ダメですよね・・・
あまりこまめにすると、たくさんのプログラムが同時に動いている場合、再起動のタイミングで比かかる可能性が高くなり、これはあまり良くないと思っています。かといって、メモリを使う方法についても立ち上げソフトが増えるとやはり再起動で消失する可能性が高くなりますしなやむところです。
データベースを使うもの(MySQLなど)であれば、仮に書き込み中に、Windowsを再起動しても大丈夫なのでしょうか?
No.3
- 回答日時:
perlからは一時ファイルに書き込みを行い、書き込みが終わった時点で本ファイルを削除→一時ファイルをリネームなど
回答いただきありがとうございます。
そう言えば、昔掲示板を作っていた頃、こういった方法をやっていました。クライアントどうさせる場合にも有効そうですね。
No.1
- 回答日時:
HDD交換してはどうか?
今のHDDは外部ユニットを組んで新しいHDDに必要ファイルを移してから
フォーマット。再利用。で良いと思うのだが?(^。^)y-.。o○
写真の複合機はエプソンが8年目くらいに止まる様にしてあるそうだ。
先代の複合機も8年くらいで使えなくなった。
詐欺会社エプソン!(-_-)/~~~ピシー!ピシー!
気に入らないのでキャノンの一番安いプリンターにした。
始めはコンビニのマルチコピーでプリンターとスキャナー代わりをしようとしたのだが
上手く行かずスキャナーだけの利用となった。
![「[perl] perlで書き込み中に、P」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/9/542522426_58fcb3ca0fc3e/M.jpg)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- ノートパソコン ハードディスクが壊れたPCのオークションへの出品の仕方を教えてください 9 2022/11/16 08:13
- USBメモリー・SDカード・フラッシュメモリー microSDカードに追記出来ない 9 2023/06/18 17:19
- ノートパソコン Windows 10 動作改善方法 6 2023/04/26 22:30
- ドライブ・ストレージ 【緊急】USBメモリから変な音がする 6 2022/05/20 15:52
- Windows 10 再起動後 Pinが使用できず、PC(windows11)にサインインできない 3 2022/08/30 20:53
- ドライブ・ストレージ QNAPのNAS RAID1が崩壊 2 2023/08/05 23:54
- Perl perlをバージョンアップしたら、今まで正常に動いていたプログラムが、エラーになってしまった 3 2022/10/05 15:44
- その他(AV機器・カメラ) GoPro動画をPC版Quikで再生できない 1 2022/05/14 21:04
- ドライブ・ストレージ SSDを追加したら昔のHDDがおかしくなった 4 2023/03/23 13:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのflock関数でロックをかけ...
-
perlのrequireの動き方について...
-
perl 正規表現でエラー
-
perl LWPでURLにアクセスした時...
-
PerlでUTF-8のファイルの文字列...
-
perl 初等プログラミングについて
-
AI sisterとは、偽物の人ですか?
-
Perlで時間の計算
-
perlの構文でカンマの意味が分...
-
テキストファイルで提出とは?
-
arduino の割り込み処理について
-
アルファベットに付いて質問し...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
perlについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
fopenでディレクトリ内の全ファ...
-
ファイルロックの解除方法
-
TSVファイルを読み込んでCSV形...
-
[perl] perlで書き込み中に、PC...
-
Cookieが保存できない。
-
perlをデスクトップのショート...
-
最新のファイルのみ検索
-
flockについて
-
unixでのファイルロックの方法...
-
ファイルの結合
-
perlでCSV形式ファイルのア...
-
CGI のモジュールをつかってフ...
-
ファイルがオープンできない
-
HTMLの中にCGIファイルリンク
-
file_exists関数について
-
1行がやたら長いテキストをバッ...
-
ファイル名の切捨てとリンクの...
-
perl の printでのファイルへの...
-
Perl 処理速度について
-
ファイルの存在確認をしたい
おすすめ情報