Was ist der Unterschied zwischen Entfernen und Aufheben der Funktionen in C++?unlink vs Entfernen in C++
Antwort
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.
remove
ist tragbar, und unlink
ist Unix-spezifisch. :-P
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
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. –
Also stimmen wir hier überein, dass es nicht unix-spezifisch ist. – bviktor
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. –
Duh zu tun, haben, sollte den Manpages :) lesen. – SyBer