2010-02-03 10 views

Odpowiedz

51

Pomijając fakt, że odłączenia UNIX jest specyficzne (jak podkreślił Chris), czytamy w instrukcji POSIX:

Jeśli ścieżka nie nazwę katalogu, usunięcia (ścieżka) jest równoważne rozłączeniu (ścieżka). Jeśli ścieżka nazywa katalog, remove (ścieżka) jest równoważne rmdir (path).

Co do Katalogu ominąć unlink czytamy:

Argument ścieżka nie musi nazwa katalogu, chyba że proces ma odpowiednie uprawnienia i realizacja wspiera użyciu odłączyć() na katalogi. (...) Aby usunąć katalog, aplikacje powinny używać polecenia rmdir().

+2

Duh, powinien przeczytać strony man :). – SyBer

19

remove jest przenośny, a unlink jest specyficzny dla systemu Unix. :-P

4

Odłączenie nie jest specyficzne dla Uniksa, nie wiem, dlaczego ludzie tak mówią. patrz io.h. choć prawdopodobnie będziesz musiał zrobić coś takiego

#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 jest funkcją Posix. MS zawierało wiele funkcji Posix w nagłówkach środowiska wykonawczego C dla swojego kompilatora, ale to zanieczyszczało przestrzeń nazw. Aby być bardziej zgodnym ze standardem C, MS później zastąpił niektóre z funkcji Posix, które dostarczyły wersjom poprzedzonym podkreśleniem (i usunął inne). Czołowe podkreślenia są zarezerwowane dla implementacji. Ogólnie, funkcje uruchomieniowe C są bardziej przenośne niż funkcje Posix. Ogólnie rzecz biorąc, funkcje Posix są dość jednotorowe, nawet jeśli niektóre systemy poza Unixem mogą zapewniać pewne wsparcie Posix. –

+1

, więc zgadzamy się, że nie jest to specyficzne dla Uniksa. – bviktor

+6

Nie, nie zgadzamy się. unlink to funkcja Posix. Posix był próbą standaryzacji systemów operacyjnych opartych na Uniksie. _unlink to inna funkcja działająca na systemie operacyjnym innym niż Unix. –