アカウント名:
パスワード:
rename(2)がPOSIX仕様に準拠していないので、Windows環境ではファイルをアトミックに交換することができない。当然、Windows環境に引きずられたXamarinでもファイルをアトミックに交換する方法は提供されていないのであろう。こんな環境でまともなプログラムが書けるとは思えないのだが、多数のWindowアプリがゴミなのも当然である。
Linuxの場合(もちろんLinuxに限らず常識的なOSは全部この動作)
rename() はファイルの名前を変更し、必要ならばディレクトリ間の移動を行なう。 そのファイルに対する (link(2) を使用して作られた) 他のハードリンク (hard link) には影響はない。 オ
アトミック性がないところでは悪くない方式だと思いますが……昔、ネットワークドライブ上でExcelのファイルを上書き保存しようとしてできなかったことがあります。クオータに引っかかっていたのですが、空き容量はもうちょっとあるはずなのに、と思ってよく見ると
>「.tmp」に書き出したのちに、元のファイルを削除してから、「.tmp」を元のファイル名にリネームすするコードが書かれているという。
この動作をしていて、空き容量不足でテンポラリファイルの作成に失敗しているようでした。これなら書き込みの途中で失敗しても元ファイルを破壊せずに済みますからね。
# 某ソフトは何も考えずに上書きするっぽくて、# 保存中にスリープボタンを押してしまい、復帰後にもう1回保存すればいいかと思って# 復帰させたらエラーで再起動がかかってしまい、結果としてファイルを壊したことがあるAC
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
クラックを法規制強化で止められると思ってる奴は頭がおかしい -- あるアレゲ人
Windowsのrename()関数を書いたやつは頭がおかしい (スコア:-1, オフトピック)
rename(2)がPOSIX仕様に準拠していないので、Windows環境ではファイルをアトミックに交換することができない。当然、Windows環境に引きずられたXamarinでもファイルをアトミックに交換する方法は提供されていないのであろう。
こんな環境でまともなプログラムが書けるとは思えないのだが、多数のWindowアプリがゴミなのも当然である。
Linuxの場合(もちろんLinuxに限らず常識的なOSは全部この動作)
Re:Windowsのrename()関数を書いたやつは頭がおかしい (スコア:0)
アトミック性がないところでは悪くない方式だと思いますが……
昔、ネットワークドライブ上でExcelのファイルを上書き保存しようとしてできなかったことがあります。
クオータに引っかかっていたのですが、空き容量はもうちょっとあるはずなのに、と思ってよく見ると
>「.tmp」に書き出したのちに、元のファイルを削除してから、「.tmp」を元のファイル名にリネームすするコードが書かれているという。
この動作をしていて、空き容量不足でテンポラリファイルの作成に失敗しているようでした。
これなら書き込みの途中で失敗しても元ファイルを破壊せずに済みますからね。
# 某ソフトは何も考えずに上書きするっぽくて、
# 保存中にスリープボタンを押してしまい、復帰後にもう1回保存すればいいかと思って
# 復帰させたらエラーで再起動がかかってしまい、結果としてファイルを壊したことがあるAC