0

ファイルを作成してそのファイルを使用するプロセスを実行しています。そのプロセスの終了後、私はそのファイルを削除しています。

その間に何らかの例外が発生した場合、ファイルがプロセスによって解放されたかどうかを知る方法と、ファイルがプロセスによってロックされている場合にファイルを削除する方法。

助けてくれてありがとう:)

4

2 に答える 2

1

Windowsでは、プロセスが終了すると、OSはそのプロセスが所有するすべてのリソースを自動的に返します。物語の終わり。

たとえば、メモリセグメントを共有するために、2つのプロセスのそれぞれで「CreateFileMapping()」を実行したとします。最初のプロセスが終了すると、Windowsは使用状況カウンターをデクリメントし、存続しているプロセスのみが引き続きオブジェクトを使用できます。2番目のプロセスが「CloseHandle()」を実行する(またはそれ自体が終了する)と、カウンターはゼロにデクリメントされ、オブジェクトは完全に解放されます。

つまり、Windowsは、プロセスが自動的にクリーンアップするかどうかに関係なく、使用されなくなったときにリソースを再利用します。

いいえ、排他的アクセスのためにファイルを開いたとしても、ファイルハンドルが閉じられると、ファイル自体は「ロック」されません(そして、プログラムが終了すると、Windowsは自動的にファイルを閉じます)。

于 2010-12-04T07:14:34.347 に答える
0

プログラムが終了すると、どのような手段であっても、ファイルがまだ存在している場合は、プロセスによってロックされなくなります...プロセスが存在しないためです。

しかし、私は疑問に思う必要があります。とにかくファイルが最後に削除されたばかりの場合、そもそも本当にファイルを作成する必要がありますか?

于 2010-12-04T07:12:46.130 に答える