2010-02-03 5 views

Antwort

51

Abgesehen von der Tatsache, dass entkoppeln Unix-spezifisch ist (wie von Chris wies darauf hin), lesen wir in der POSIX-Handbuch:

Wenn Pfad keine Verzeichnisnamen entfernen (Pfad) entspricht dem Link (Pfad). Wenn Pfad ein Verzeichnis bezeichnet, entspricht remove (Pfad) dem Befehl rmdir (Pfad).

Wie für das Verzeichnis-geben unlink lesen wir:

Der Pfad Argument ein Verzeichnis nicht, es sei denn der Prozess entsprechenden Berechtigungen hat nennen muss und die Implementierung unterstützt mit unlink() auf Verzeichnisse. (...) Anwendungen sollten rmdir() verwenden, um ein Verzeichnis zu entfernen.

+2

Duh zu tun, haben, sollte den Manpages :) lesen. – SyBer

19

remove ist tragbar, und unlink ist Unix-spezifisch. :-P

4

unlink ist nicht unix-spezifisch, ich weiß nicht, warum Leute das sagen. siehe io.h. obwohl Sie wahrscheinlich so etwas wie

#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

+6

unlink ist eine Posix-Funktion. MS enthielt viele Posix-Funktionen in den C-Laufzeit-Headern für ihren Compiler, was jedoch den Namensraum verschmutzte. Um dem C-Standard besser zu entsprechen, ersetzte MS später einige der Posix-Funktionen, die sie mit Versionen versehen hatten, denen ein Unterstrich vorangestellt war (und entfernte andere). Führende Unterstriche sind der Umsetzung vorbehalten. Im Allgemeinen sind C-Laufzeitfunktionen portabler als Posix-Funktionen. Posix-Funktionen sind im Allgemeinen sehr unixzentrisch, obwohl einige Nicht-Unix-Betriebssysteme eine gewisse Posix-Unterstützung bieten. –

+1

Also stimmen wir hier überein, dass es nicht unix-spezifisch ist. – bviktor

+6

Nein, wir sind nicht einverstanden. unlink ist eine Posix-Funktion. Posix war ein Versuch, von Unix abgeleitete Betriebssysteme zu standardisieren. _unlink ist eine andere Funktion, die auf einem Nicht-Unix-Betriebssystem funktioniert. –