アカウント名:
パスワード:
rename(2)がPOSIX仕様に準拠していないので、Windows環境ではファイルをアトミックに交換することができない。当然、Windows環境に引きずられたXamarinでもファイルをアトミックに交換する方法は提供されていないのであろう。こんな環境でまともなプログラムが書けるとは思えないのだが、多数のWindowアプリがゴミなのも当然である。
Linuxの場合(もちろんLinuxに限らず常識的なOSは全部この動作)
rename() はファイルの名前を変更し、必要ならばディレクトリ間の移動を行なう。 そのファイルに対する (link(2) を使用して作られた) 他のハードリンク (hard link) には影響はない。 オ
そうゆう場合はReplaceFile系のWin32APIを使うはず.netだとFile.Replace
かつては Transactional NTFS なるものでアトミック性も含めて保証されていたんですけどね
8から非推奨になったけど、一応10でも使える。
インストーラとか作るの楽だったんだけど、msi作るのが気楽になったから、もう不要なのか。もっとASP.NETが普及してたら、商用ソフトの課金なんかもローカルと複数のサーバー間の同期も単一のトランザクションに出来たのにねぇ。
Vista 出る前のプレビューだと、コマンドラインでトランザクション作って、その上でネットの怪しいソフトインストールして試して、気にいらなくなったらロールバックすれば綺麗さっぱりみたいな事が気軽に出来て良かったんだけどなぁ。Vistaの正式リリース時はコマンドラインからトランザクション作ったりする機能消されたり、出た直後から不遇だった。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
アレゲはアレゲ以上のなにものでもなさげ -- アレゲ研究家
Windowsのrename()関数を書いたやつは頭がおかしい (スコア:-1, オフトピック)
rename(2)がPOSIX仕様に準拠していないので、Windows環境ではファイルをアトミックに交換することができない。当然、Windows環境に引きずられたXamarinでもファイルをアトミックに交換する方法は提供されていないのであろう。
こんな環境でまともなプログラムが書けるとは思えないのだが、多数のWindowアプリがゴミなのも当然である。
Linuxの場合(もちろんLinuxに限らず常識的なOSは全部この動作)
Re: (スコア:1)
そうゆう場合はReplaceFile系のWin32APIを使うはず
.netだとFile.Replace
Re: (スコア:0)
きっとアトミックに違いないと信じて行っている呪術プログラミングを世界中でやってるだけなんだよねこれが。
Re:Windowsのrename()関数を書いたやつは頭がおかしい (スコア:0)
かつては Transactional NTFS なるものでアトミック性も含めて保証されていたんですけどね
Re: (スコア:0)
8から非推奨になったけど、一応10でも使える。
インストーラとか作るの楽だったんだけど、msi作るのが気楽になったから、もう不要なのか。
もっとASP.NETが普及してたら、商用ソフトの課金なんかもローカルと複数のサーバー間の同期も単一のトランザクションに出来たのにねぇ。
Vista 出る前のプレビューだと、コマンドラインでトランザクション作って、その上でネットの怪しいソフトインストールして試して、気にいらなくなったらロールバックすれば綺麗さっぱりみたいな事が気軽に出来て良かったんだけどなぁ。
Vistaの正式リリース時はコマンドラインからトランザクション作ったりする機能消されたり、出た直後から不遇だった。
Re: (スコア:0)