Rechercher une page de manuel
getcwd
Langue: pl
Version: 2002-04-22 (openSuse - 09/10/07)
Section: 3 (Bibliothèques de fonctions)
NAZWA
getcwd, get_current_dir_name, getwd - odczytanie bie¿±cego katalogu roboczegoSK£ADNIA
#include <unistd.h> char *getcwd(char *buf, size_t size); char *get_current_dir_name(void); char *getwd(char *buf);
OPIS
Funkcja getcwd() kopiuje nazwê bezwzglêdnej ¶cie¿ki dostêpu dla bie¿±cego katalogu roboczego do tablicy wskazywanej przez buf, która to tablica ma d³ugo¶æ size.Je¶li nazwa bie¿±cej bezwzglêdnej ¶cie¿ki dostêpu wymaga bufora d³u¿szego ni¿ size elementów, to zwracane jest NULL a errno jest ustawiane na ERANGE; aplikacja powinna sprawdzaæ, czy nie wyst±pi³ ten b³±d i przydzielaæ wiêkszy bufor, je¶li jest to potrzebne.
Je¶li buf jest równe NULL, zachowanie getcwd() jest nieokre¶lone.
Jako rozszerzenie standardu POSIX.1, linuksowe (libc4, libc5, glibc) getcwd() przydziela bufor dynamicznie korzystaj±c z malloc(), je¶li buf jest równe NULL podczas wywo³ania. W tym przypadku przydzielony bufor ma d³ugo¶æ size, chyba ¿e size jest równe zero. Wówczas dla buf jest przydzielane tyle, ile potrzeba. Jest mo¿liwe (i naprawdê zalecane) zwalnianie otrzymanych w ten sposób buforów za pomoc± free().
get_current_dir_name, które jest jedynie prototypem gdy _GNU_SOURCE jest zdefiniowane, przydzieli za pomoc± malloc(3) tablicê dostatecznie du¿±, aby przechowaæ nazwê bie¿±cego katalogu. Je¶li zmienna ¶rodowiskowa PWD jest ustawiona, a jej warto¶æ prawid³owa, to zostanie zwrócona ta warto¶æ.
getwd, które jest jedynie prototypem gdy _BSD_SOURCE lub _XOPEN_SOURCE_EXTENDED jest zdefiniowane, nie przydzieli ¿adnej pamiêci za pomoc± malloc(3). Argument buf powinien byæ wska¼nikiem do tablicy o d³ugo¶ci co najmniej PATH_MAX bajtów. getwd zwróci jedynie pierwsze PATH_MAX bajtów nazwy bie¿±cej ¶cie¿ki dostêpu. Nale¿y zwróciæ uwagê, ¿e PATH_MAX nie musi byæ sta³± okre¶lan± podczas kompilacji; mo¿e ona zale¿eæ od systemu plików, a nawet byæ nieograniczona. Ze wzglêdu na przeno¶no¶æ i bezpieczeñstwo u¿ywanie getwd nie jest zalecane.
WARTO¦Æ ZWRACANA
NULL w przypadku b³êdu, przy jednoczesnym ustawieniu errno, a buf w przypadku pomy¶lnego zakoñczenia. Zawarto¶æ tablicy wskazywanej przez buf w przypadku b³êdu jest nieokre¶lona.B£ÊDY
- EACCES
- Brak praw do odczytu lub przeszukiwania sk³adnika nazwy pliku.
- EFAULT
- buf wskazuje na niew³a¶ciwy adres.
- EINVAL
- Argument size jest zerowy, a buf nie jest wska¼nikiem NULL.
- ENOENT
- Bie¿±cy katalog roboczy zosta³ skasowany.
- ERANGE
- Argument size jest mniejszy od d³ugo¶ci nazwy katalogu roboczego. Trzeba przydzieliæ wiêksz± tablicê i spróbowaæ ponownie.
UWAGI
Pod Linuksem, funkcja getcwd() jest funkcj± systemow± (od 2.1.92). W starszych systemach mog³a ona odpytywaæ /proc/self/cwd. 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 w razie niepomy¶lnego zakoñczenia zwróciæ b³±d EACCES.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 (".") i wywo³anie fchdir(2), aby wróciæ jest zazwyczaj szybsz± i bardziej niezawodn± alternatyw±, zw³aszcza na platformach innych ni¿ Linux.
ZGODNE Z
POSIX.1ZOBACZ TAK¯E
chdir(2), fchdir(2), open(2), unlink(2), free(3), malloc(3)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre