プロが教えるわが家の防犯対策術!

openした後、closeしないでプログラムを終了するとどうなりますか?
すでにオープンされているファイルハンドルを再びopenしようとすると、まず自動的にクローズするとありますが、プログラム終了時はどうなのでしょう。
まあ、プログラム中でしかファイルハンドル使えないので、どっちでも変わらないと思いますが。。。

A 回答 (4件)

>OSではなくperlが自動的にcloseしてくれている事を期待していたのですが、ここはやはりOSまかせにせず、自分でcloseした方が良さそうですね。



ユーザ空間で動作するプロセスが自分でクローズしないなら、そのプロセスが終わった時点でOSが後始末します(実際には後始末リストに入れます)。
特にファイルロックが必要でないなら、用が済んだ時点で自分でクローズとかメモリ解放してくれるとOSは助かります。
    • good
    • 0
この回答へのお礼

perlはそこまで面倒見てくれないが、最悪忘れてもOSが面倒見てくれるという認識を得たうえで、自分でクローズするか方針を決めていきたいと思います

お礼日時:2021/06/11 13:38

一般的にはOS(カーネル)がプロセスの終了を検知して、ファイル(広義にはソケットなども)のクローズ、出力済みのデータのフラッシュ、読み込み済みデータの破棄、アロケートしたメモリの解放を行います。

プロセス終了の検知は即時とは限りません。

それが正常終了でも異常終了でも変わりません。
    • good
    • 0
この回答へのお礼

OSではなくperlが自動的にcloseしてくれている事を期待していたのですが、ここはやはりOSまかせにせず、自分でcloseした方が良さそうですね。
この問題はclose文を1行書けば済む話なのですが、perlユーザーとしてはperlの細かい挙動も気になってしまうのです。

お礼日時:2021/06/11 11:55

closeしないでプログラムを終了すると「保存」していないので再度プログラムを作り直す必要があります。

    • good
    • 0
この回答へのお礼

closeとプログラムの保存は関係ない気がするのですが。。。
詳しく教えてください

お礼日時:2021/06/11 11:39

使われないけど、解放されないメモリーができて、しだいにOSが使えるメモリーが減って、最後はOSが落ちることになったりします。


ただ、OSがうまくメモリ管理していれば、そんなことにはなりませんが・・・。
    • good
    • 1
この回答へのお礼

OSまかせにせず自分でcloseした方が良さそうですね

お礼日時:2021/06/11 11:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています