DUP(2) | Podręcznik programisty Linuksa | DUP(2) |
NAZWA¶
dup, dup2 - powielenie deskryptora plikuSKŁ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)INFORMACJE O TŁUMACZENIU¶
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/.
1994-08-21 | Linux 1.1.46 |