#include <unistd.h> char *getcwd(char buf[.size], size_t size); char *get_current_dir_name(void); [[deprecated]] char *getwd(char buf[PATH_MAX]);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
get_current_dir_name() :
_GNU_SOURCE
getwd() :
Since glibc 2.12: (_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L) || /* glibc >= 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE Before glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500
La fonction getcwd() copie le chemin d'accès absolu du répertoire de travail courant dans la chaîne pointée par buf, qui est de longueur size.
Si la taille du chemin absolu du répertoire de travail en cours, caractère nul de fin compris, dépasse size octets, la fonction renvoie NULL et errno contient le code d'erreur ERANGE. Une application doit détecter cette erreur et allouer un tampon plus grand si besoin est.
As an extension to the POSIX.1-2001 standard, glibc's getcwd() allocates the buffer dynamically using malloc(3) if buf is NULL. In this case, the allocated buffer has the length size unless size is zero, when buf is allocated as big as necessary. The caller should free(3) the returned buffer.
get_current_dir_name() allouera avec malloc(3) une chaîne suffisamment grande pour contenir le nom du chemin absolu du répertoire de travail courant. Si la variable d'environnement PWD est configurée, et correcte, cette valeur sera renvoyée. L'appelant doit libérer avec free(3) le tampon renvoyé.
getwd() n'allouera aucune mémoire (avec malloc(3)). Le paramètre buf doit être un pointeur sur une chaîne comportant au moins PATH_MAX octets. Si la longueur du chemin absolu du répertoire de travail actuel, caractère nul de fin compris, dépasse PATH_MAX octets, NULL est renvoyé et errno prend la valeur ENAMETOOLONG. Notez que sur certains système, PATH_MAX peut ne pas être une constante connue à la compilation ; de plus, sa valeur peut dépendre du système de fichiers, voire être illimitée, consultez pathconf(3). Pour des raisons de portabilité et de sécurité, l'utilisation de getwd() est déconseillée.
En cas d'échec, ces fonctions renvoient NULL, et remplissent errno avec le code d'erreur. Le contenu de la chaîne pointée par buf est indéfini en cas d'erreur.
Interface | Attribut | Valeur |
getcwd(), getwd() | Sécurité des threads | MT-Safe |
get_current_dir_name() | Sécurité des threads | MT-Safe env |
getwd() est présent dans POSIX.1-2001, mais marquée « LEGACY ». POSIX.1-2008 supprime la spécification de getwd() et POSIX.1-2001 ne définit aucune erreur pour getwd(). Utilisez getcwd() à la place.
get_current_dir_name() est une extension GNU.
Ces fonctions sont souvent utilisées pour sauver le répertoire de travail afin d'y revenir plus tard. Ouvrir le répertoire courant (« . ») et appeler fchdir(2) pour y revenir est habituellement une alternative plus rapide et plus fiable (surtout sur d'autres systèmes que Linux) si l'on dispose de suffisamment de descripteurs de fichier.
Following a change in Linux 2.6.36, the pathname returned by the getcwd() 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 chroot(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 pathname from untrusted sources, callers of the functions described in this page should consider checking whether the returned pathname starts with '/' or '(' to avoid misinterpreting an unreachable path as a relative pathname.
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à