NAZWA¶
dup, dup2 - powielenie deskryptora pliku
SKŁADNIA¶
#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
OPIS¶
Uwaga! To tłumaczenie może być nieaktualne!
dup i
dup2 tworzą kopię deskryptora pliku
oldfd.
Po pomyślnym zakończeniu
dup lub
dup2, stary i nowy
deskryptor mogą być używane zamiennie.
Współdzielą one blokady, pozycję pliku i znaczniki; na
przykład, jeśli pozycja pliku zmieni się w wyniku użyciu
lseek dla jednym z deskryptorów, zmieni się ona także
dla drugiego.
Te dwa deskryptory nie współdzielą jednak znacznika
close-on-exec.
dup używa dla nowego deskryptora nieużywanego deskryptora o
najniższym numerze.
dup2 powoduje, że
newfd staje się kopią
oldfd, zamykając najpierw
newfd, jeśli jest to
potrzebne.
WARTOŚĆ ZWRACANA¶
dup i
dup2 zwracają nowy deskryptor, lub -1 po
błędzie (w tym przypadku odpowiednio ustawiane jest
errno).
BŁĘDY¶
- EBADF
- oldfd nie jest deskryptorem otwartego pliku, lub
newfd jest poza dozwolonym dla deskryptorów plików
zakresem.
- EMFILE
- Proces już osiągnął maksymalną
liczbę otwartych deskryptorów plików, a próbował
otworzyć nowy.
OSTRZEŻENIE¶
Błąd zwracany przez
dup2 jest inny niż zwracany przez
fcntl(...,
F_DUPFD, ...
), gdy
newfd jest poza
zakresem. W niektórych systemach
dup2 zwraca też czasem
EINVAL jako
F_DUPFD.
USTERKI¶
Jeśli
newfd był otwarty, wszelkie błędy, które
mogłyby zostać zgłoszone w chwili wykonania
close()
zostaną utracone. Ostrożny programista nie użyje
dup2
bez wcześniejszego zamknięcia
newfd.
ZGODNE Z¶
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 dokumentuje dodatkowe błędy
EINTR i ENOLINK. POSIX.1 dodaje EINTR.
ZOBACZ TAKŻE¶
fcntl(2),
open(2),
close(2)
Powyższe tłumaczenie pochodzi z nieistniejącego już Projektu
Tłumaczenia Manuali i
może nie być aktualne. W razie
zauważenia różnic między powyższym opisem a
rzeczywistym zachowaniem opisywanego programu lub funkcji, prosimy o
zapoznanie się z oryginalną (angielską) wersją strony
podręcznika za pomocą polecenia:
- man --locale=C 2 dup
Prosimy o pomoc w aktualizacji stron man - więcej informacji można
znaleźć pod adresem
http://sourceforge.net/projects/manpages-pl/.