2011-01-13 10 views
2

Technical Q&A 1497this questionに時々失敗FSDeleteObjectからfBsyErrを取得するとき、適切な回避策がX 10.5+にFSUnlinkObjectを呼び出すことで、ことを示しています。ファイルの削除は、(その答えテクニカルノートからコピー)は、Mac

FSUnlinkObjectがドキュメントに表示されないことに注意以外の)2つのAPI FSDeleteObjectFSUnlinkObject 間の技術的な違いは何ですか?なぜunlinkはフォールバックであり、プライマリAPIではないのですか?

+0

"API関数" ** APIは機能の集合であり、単一の機能ではありません;)私は専門用語です。/ontopic - 興味深い質問。私の考えは、それを削除すると永久に削除されますが、unlinkは単にリストから取り除くだけですが(そのように)、ファイルはまだそこにあります。しかし、私は間違っているかもしれません。 – Qix

答えて

0

FSDeleteObjectは、Mac OSがUnixとマージされるずっと前に存在していたファイル削除機能の行を続けるため、ファイルのリンクを解除するのはUnixのコンセプトだからです。

+0

これは、Deleteが優先呼び出しでなければならない理由を示唆していますか?もしそうなら、私はそれを紛失している。 – Richard

0

あなたがリンクしたアップルのドキュメントは、その違いをはっきりと説明しています。 FSUnlinkObjectはunlink()と同じセマンティクスを持っています - 開いているファイルを削除することができます。 FSDeleteObjectは開いているファイルを削除することを許可していませんし、そのときにエラーコードを返します。

+0

はい、それは何も説明していません - なぜ、プライマリで削除し、ビジー状態の場合はフォールバックのリンクを解除する必要がありますか?常にunlinkを使用しないでください。 – Richard

+1

@リチャード:誰が削除はプライマリだと言う?上記のQ&Aには、「このAPI呼び出しは、10.5以降のファイルを削除するときにエラーを回避するための推奨された解決方法です」と記載されています。しかし、これは、常にリンク解除を使わない理由の1つを示唆しています。OS 10.4と互換性のあるコードを書こうとしている可能性があります。これはQ&Aが書かれたときよりもおそらく大きな問題でした。 – JWWalker

関連する問題