2012-03-20 4 views
1

Mac OS X(10.6)でファイルを作成したい場合は、プロセスがなくなると自動的に削除されます。これは可能ですか?私が実装しているファイルロックスキームにとっては非常に便利です。好ましくは、ココアまたは炭素コールとして。(所有している)プロセスがなくなったときに削除されるファイルを作成することはできますか?

Windowsではこれが可能です。それは非常にきちんとした機能ですが、ファイルシステムによってサポートされる必要があるかどうかはわかりません。

Win32では、あなたはFILE_FLAG_DELETE_ON_CLOSEでのCreateFileを呼び出すことができます。 .netでは、FileOptions.DeleteOnCloseを引数としてFileStreamを作成できます。

答えて

2

独自のプログラムを作成している場合は、tmpfile()呼び出しを使用できます。 プログラムの終了時に自動的に削除される一時ファイルを作成します。あなたはNSApplicationDelegate経由でファイルを作成および削除するアプリのデリゲートを持つことができ

+0

あなたの答えをありがとう。これは正しい方向への一歩ですが、これは/ tmp /(右?)にファイルを置くように見えます、そして、私はそれがどこにあるのかを指定する必要があります。私はそれを要件として述べていないことを理解していますが、そうです。 :) –

+0

一時ファイルが作成されると直ちに一時ファイルがファイルシステムからリンク解除されるという問題があるだけです。これは、他のプロセスがファイルシステムを見ることができないことを意味します。 – JeremyP

0

ユーザー力がシャットダウン/終了した場合、ただし、ファイルが残ってしまいます。強制終了があなたの懸念の一部ではない場合、これはうまくいくはずです。そうでない場合は、プロセスが存在するかどうかを確認する簡単な起動エージェントを作成し、存在しない場合はファイルを削除することができます。

0

ファイルを削除するためにatexit()ハンドラを登録することはできますが、特にプログラムがクラッシュした場合、完全に信頼できるとは限りません。

あなたが適切なファイルロックをしたい場合、それは協力的で、けれども、flock()を使用することを検討してください。

関連する問題