.\" -*- coding: UTF-8 -*- '\" t .\" Copyright (c) 1993 by Thomas Koenig (ig25@rz.uni-karlsruhe.de) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified Wed Jul 21 22:35:42 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified 18 Mar 1996 by Martin Schulze (joey@infodrom.north.de): .\" Corrected description of getwd(). .\" Modified Sat Aug 21 12:32:12 MET 1999 by aeb - applied fix by aj .\" Modified Mon Dec 11 13:32:51 MET 2000 by aeb .\" Modified Thu Apr 22 03:49:15 CEST 2002 by Roger Luethi .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getcwd 3 "20 lutego 2025 r." "Linux man\-pages 6.12" .SH NAZWA getcwd, getwd, get_current_dir_name \- odczytuje bieżący katalog roboczy .SH BIBLIOTEKA Standardowa biblioteka C (\fIlibc\fP,\ \fI\-lc\fP) .SH SKŁADNIA .nf \fB#include \fP .P \fBchar *getcwd(char \fP\fIbuf\fP\fB[.\fP\fIsize\fP\fB], size_t \fP\fIsize\fP\fB);\fP \fBchar *get_current_dir_name(void);\fP .P \fB[[przestarzałe]] char *getwd(char \fP\fIbuf\fP\fB[PATH_MAX]);\fP .fi .P .RS -4 Wymagane ustawienia makr biblioteki glibc (patrz \fBfeature_test_macros\fP(7)): .RE .P \fBget_current_dir_name\fP(): .nf _GNU_SOURCE .fi .P \fBgetwd\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED Od glibc 2.12: (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L) || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE Przed glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 .fi .SH OPIS Te funkcje zwracają zakończony bajtem null łańcuch znaków, zawierający nazwę bezwzględnej ścieżki do bieżącego katalogu roboczego procesu wywołującego. Nazwa ścieżki jest zwracana jako wynik funkcji i poprzez argument \fIbuf\fP, jeśli jest obecny. .P Funkcja \fBgetcwd\fP() kopiuje nazwę bezwzględnej ścieżki dostępu, bieżącego katalogu roboczego, do tablicy wskazywanej przez \fIbuf\fP, która to tablica ma długość \fIsize\fP. .P Jeśli nazwa bieżącej bezwzględnej ścieżki dostępu wymaga bufora dłuższego niż \fIsize\fP elementów, to zwracane jest \fBNULL\fP, a \fIerrno\fP jest ustawiane na \fBERANGE\fP; aplikacja powinna sprawdzać, czy nie wystąpił ten błąd, i przydzielać większy bufor, jeżeli jest to potrzebne. .P Jako rozszerzenie standardu POSIX.1\-2001, wersja glibc funkcji \fBgetcwd\fP() przydziela bufor dynamicznie korzystając z \fBmalloc\fP(3), jeśli \fIbuf\fP jest równe \fBNULL\fP. W tym przypadku przydzielony bufor ma długość \fIsize\fP, chyba że \fIsize\fP jest równe zero, co oznacza że buforowi \fIbuf\fP jest przydzielane tyle pamięci, ile potrzeba. Program wywołujący powinien zwolnić zwrócony bufor, wywołując \fBfree\fP(3). .P \fBget_current_dir_name\fP() przydzieli za pomocą \fBmalloc\fP(3) tablicę dostatecznie dużą, aby przechować bezwzględną nazwę bieżącego katalogu. Jeśli zmienna środowiskowa \fBPWD\fP jest ustawiona, a jej wartość prawidłowa, to zostanie zwrócona ta wartość. Program wywołujący powinien zwolnić zwrócony bufor, wywołując \fBfree\fP(3). .P \fBgetwd\fP() nie przydziela żadnej pamięci za pomocą \fBmalloc\fP(3). Argument \fIbuf\fP powinien być wskaźnikiem do tablicy o długości co najmniej \fBPATH_MAX\fP bajtów. Jeśli długość bezwzględnej ścieżki do bieżącego katalogu roboczego łącznie z końcowym bajtem null przekracza \fBPATH_MAX\fP bajtów, to zwracany jest NULL i \fIerrno\fP jest ustawiane na \fBENAMETOOLONG\fP. (Należy zwrócić uwagę, że \fBPATH_MAX\fP nie musi być stałą określaną podczas kompilacji; co więcej może ona zależeć od systemu plików, patrz \fBpathconf\fP(3)). Ze względu na przenośność i bezpieczeństwo używanie \fBgetwd\fP() nie jest zalecane. .SH "WARTOŚĆ ZWRACANA" Jeśli się zakończą pomyślnie, to te funkcje zwracają wskaźnik do łańcucha znaków zawierającego nazwę ścieżki do bieżącego katalogu roboczego, W przypadku \fBgetcwd\fP() oraz \fBgetwd\fP() jest to ten sam wskaźnik, co przekazany w argumencie \fIbuf\fP. .P W przypadku błędu funkcje te zwracają NULL, jednocześnie ustawiając \fIerrno\fP, wskazujące na rodzaj błędu. Zawartość tablicy wskazywanej przez \fIbuf\fP w przypadku błędu jest nieokreślona. .SH BŁĘDY .TP \fBEACCES\fP Brak praw do odczytu lub przeszukiwania składnika nazwy pliku. .TP \fBEFAULT\fP \fIbuf\fP wskazuje na niewłaściwy adres. .TP \fBEINVAL\fP Argument \fIsize\fP jest zerowy, a \fIbuf\fP nie jest wskaźnikiem NULL. .TP \fBEINVAL\fP \fBgetwd\fP(): \fIbuf\fP jest równy NULL. .TP \fBENAMETOOLONG\fP \fBgetwd\fP(): Rozmiar zakończonej znakiem null pełnej nazwy katalogu roboczego przekracza \fBPATH_MAX\fP bajtów. .TP \fBENOENT\fP Bieżący katalog roboczy został skasowany. .TP \fBENOMEM\fP Brak pamięci. .TP \fBERANGE\fP Argument \fIsize\fP jest mniejszy od długości pełnej nazwy katalogu roboczego, włączając w to końcowy bajt null. Należy przydzielić większą tablicę i spróbować ponownie. .SH ATRYBUTY Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Interfejs Atrybut Wartość T{ .na .nh \fBgetcwd\fP(), \fBgetwd\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne T{ .na .nh \fBget_current_dir_name\fP() T} Bezpieczeństwo wątkowe MT\-bezpieczne env .TE .SH WERSJE POSIX.1\-2001 nie określa zachowania funkcji \fBgetcwd\fP(), jeśli \fIbuf\fP jest równy NULL. .P POSIX.1\-2001 nie definiuje żadnych błędów dla \fBgetwd\fP(). .SH WERSJE .SS "Różnice biblioteki C/jądra" .\" commit 3272c544da48f8915a0e34189182aed029bd0f2b Jądro Linux dostarcza wywołanie systemowe \fBgetcwd\fP, które jeśli jest to możliwe, będzie używane przez funkcje opisane w tym podręczniku. Wywołanie to przyjmuje takie same argumenty, jak funkcja biblioteczna o tej samej nazwie, ale długość zwracanej wartości jest ograniczona do \fBPATH_MAX\fP bajtów (przed wersją 3.12 Linuksa, ograniczeniem długości zwracanej wartości był rozmiar strony systemowej; w przypadku wielu architektur sprzętowych \fBPATH_MAX\fP i rozmiar strony są sobie równe i wynoszą 4096, ale jest kilka architektur, które mają większy rozmiar strony). Jeśli długość ścieżki bieżącego katalogu roboczego przekracza ten limit, to wywołanie systemowe zwraca błąd \fBENAMETOOLONG\fP. W takim przypadku funkcje biblioteczne przechodzą do alternatywnej (wolniejszej) implementacji, zwracającej pełną nazwę ścieżki. .P .\" commit 8df9d1a4142311c084ffeeacb67cd34d190eff74 Following a change in Linux 2.6.36, the pathname returned by the \fBgetcwd\fP() system call will be prefixed with the string "(unreachable)" if the current directory is not below the root directory of the current process (e.g., because the process set a new filesystem root using \fBchroot\fP(2) without changing its current directory into the new root). Such behavior can also be caused by an unprivileged user by changing the current directory into another mount namespace. When dealing with pathnames from untrusted sources, callers of the functions described in this page (before glibc 2.27) or the raw \fBgetcwd\fP() system call should consider checking whether the returned pathname starts with '/' or '(' to avoid misinterpreting an unreachable path as a relative pathname. .SH STANDARDY .TP \fBgetcwd\fP() POSIX.1\-2008. .TP \fBget_current_dir_name\fP() GNU. .TP \fBgetwd\fP() Brak. .SH HISTORIA .TP \fBgetcwd\fP() POSIX.1\-2001. .TP \fBgetwd\fP() POSIX.1\-2001, lecz oznaczone jako LEGACY (przestarzałe). Usunięte w POSIX.1\-2008. Należy używać w zamian \fBgetcwd\fP(). .P Pod Linuksem funkcje te używają wywołania systemowego \fBgetcwd\fP() (dostępnego od wersji 2.1.92 Linuksa). W starszych systemach mogły odpytywać \fI/proc/self/cwd\fP. Gdy nie ma ani funkcji systemowej, ani systemu plików proc, wywoływana jest implementacja ogólna. Jedynie w takiej sytuacji wywołanie tych funkcji może pod Linuksem zwrócić w razie niepomyślnego zakończenia błąd \fBEACCES\fP. .SH UWAGI Funkcje te są często używane do zapamiętywania położenia bieżącego katalogu roboczego w celu późniejszego powrotu do niego. Gdy dostępnych jest dostatecznie wiele deskryptorów plików, otwarcie bieżącego katalogu (\[Bq].\[rq]) i wywołanie \fBfchdir\fP(2), aby do niego wrócić, jest zazwyczaj szybszą i bardziej niezawodną alternatywą, zwłaszcza na platformach innych niż Linux. .SH USTERKI Począwszy od tej zmiany w Linuksie 2.6.36, która w przypadkach powyżej opisanych dodawała prefiks \[Bq](unreachable)\[rq], implementacja glibc funkcji \fBgetcwd\fP() stała się niezgodna ze standardem POSIX i zwracała względną ścieżkę, mimo że API wymagało ścieżki bezwzględnej. Zostało to naprawione w glibc 2.27: wywołanie \fBgetcwd\fP() z takiego katalogu bieżącego zwróci błąd \fBENONET\fP. .SH "ZOBACZ TAKŻE" \fBpwd\fP(1), \fBchdir\fP(2), \fBfchdir\fP(2), \fBopen\fP(2), \fBunlink\fP(2), \fBfree\fP(3), \fBmalloc\fP(3) .PP .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Andrzej Krzysztofowicz , Robert Luberda i Michał Kułach . .PP Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License w wersji 3 .UE lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI. .PP Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej .MT manpages-pl-list@lists.sourceforge.net .ME .