| unlink(2) | System Calls Manual | unlink(2) |
unlink, unlinkat - usuwa nazwę i może usunąć plik, do której nazwa ta się odnosi
Standardowa biblioteka C (libc, -lc)
#include <unistd.h>
int unlink(const char *pathname);
#include <fcntl.h> /* Definicja stałych AT_* */ #include <unistd.h>
int unlinkat(int dirfd, const char *pathname, int flags);
unlinkat():
Od glibc 2.10:
_POSIX_C_SOURCE >= 200809L
Przed glibc 2.10:
_ATFILE_SOURCE
unlink() usuwa nazwę z systemu plików. Jeśli nazwa ta była ostatnim dowiązaniem do pliku i żaden proces nie utrzymuje tego pliku otwartego, plik jest usuwany, a przestrzeń jaką zajmował staje się dostępna do ponowego użytku.
Jeśli nazwa była ostatnim dowiązaniem do pliku, lecz istnieją procesy, które utrzymują plik otwarty, plik będzie istniał do momentu zamknięcia ostatniego, odnoszącego się do niego, deskryptora pliku.
Jeśli nazwa odnosi się do dowiązania symbolicznego, dowiązanie to jest usuwane.
Jeśli nazwa odnosiła się do gniazda, FIFO lub urządzenia, nazwa ta jest usuwana, lecz procesy, które utrzymywały obiekt otwarty, wciąż mogą go używać.
Wywołanie systemowe unlinkat() działa dokładnie w ten sam sposób jak unlink() lub rmdir(2) (w zależności od tego, czy flags zawiera AT_REMOVEDIR, czy też nie) z wyjątkiem różnic opisanych poniżej.
Jeśli ścieżka podana w pathname jest względna, to jest interpretowana w odniesieniu do katalogu, do którego odnosi się deskryptor pliku dirfd (zamiast w odniesieniu do bieżącego katalogu roboczego procesu wywołującego, jak czynią to unlink() i rmdir(2) w przypadku ścieżek względnych).
Jeśli ścieżka podana w pathname jest względna, a dirfd ma wartość specjalną AT_FDCWD, to ścieżka pathname jest interpretowana w odniesieniu do bieżącego katalogu roboczego procesu wywołującego (jak czynią to unlink() i rmdir(2)).
Jeśli ścieżka podana w pathname jest bezwzględna, to dirfd jest ignorowane.
flags jest maską bitową mogącą być określoną jako 0 lub jako suma (OR) wartości znaczników, które kontrolują działanie unlinkat(). Obecnie zdefiniowano tylko jeden taki znacznik:
Więcej informacji o potrzebie wprowadzenia unlinkat() można znaleźć w podręczniku openat(2).
Po pomyślnym zakończeniu zwracane jest zero. Po błędzie zwracane jest -1 i ustawiane errno, wskazując błąd.
Błędy, które mogą wystąpić w unlink() i rmdir(2) mogą również wystąpić w unlinkat(). Następujące dodatkowe błędy mogą wystąpić w unlinkat():
POSIX.1-2008.
W starszych jądrach, gdzie unlinkat() jest niedostępne, funkcja opakowująca z glibc zapasowo korzysta z unlink() lub rmdir(2). Gdy pathname jest ścieżką względną, glibc tworzy ścieżkę w oparciu o dowiązanie symboliczne w /proc/self/fd, które odnosi się do argumentu dirfd.
Nietrafne rozwiązania w protokole odpowiedzialnym za obsługę NFS mogą spowodować nieoczekiwane zniknięcie plików, które są wciąż w użyciu.
rm(1), unlink(1), chmod(2), link(2), mknod(2), open(2), rename(2), rmdir(2), mkfifo(3), remove(3), path_resolution(7), symlink(7)
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.
| 13 czerwca 2024 r. | Linux man-pages 6.9.1 |