web-dev-qa-db-ja.com

リンク解除とC ++での削除

C++の関数の削除とリンク解除の違いは何ですか?

41
SyBer

(Chrisによって指摘されたように)unlinkがunix固有であるという事実は別として、POSIXマニュアルを読みます:

パスがディレクトリを指定しない場合、remove(path)はunlink(path)と同等です。パスがディレクトリを指定している場合、remove(path)はrmdir(path)と同等です。

ディレクトリ渡しのunlinkについては、次のように読みます。

プロセスが適切な特権を持ち、実装がディレクトリでのunlink()の使用をサポートしている場合を除いて、パス引数はディレクトリを指定してはなりません。 (...)アプリケーションは、ディレクトリを削除するためにrmdir()を使用する必要があります。

57

removeは移植可能で、unlinkはUnix固有です。 :-P

19

remove()関数は、パスで指定されたファイルまたはディレクトリを削除します。

Pathがディレクトリを指定している場合、remove(path)rmdir(path)と同等です。それ以外の場合は、unlink(path)と同等です。

から:man remove

幸運を ;)

5
Quentin Perez

unlinkはunix固有のものではありません。なぜ人々がそう言っているのかはわかりません。 io.hを参照してください。あなたはおそらく次のようなことをしなければならないでしょうが

#define unlink _unlink

http://msdn.Microsoft.com/en-us/library/1c3tczd6%28v=VS.100%29.aspx

http://msdn.Microsoft.com/en-us/library/2da4hk1d%28v=VS.100%29.aspx

4
bviktor