Вернуть путь, используемый для обращения к текущему процессу
#include <process.h>char * _cmdname( char *buff );
NULL
или указатель на буфер, в котором функция сможет разместить путь. Чтобы определить необходимый размер буфера, следует вызвать fpathconf() или pathconf() с аргументом _PC_PATH_MAX
и прибавить к результату 1
для завершающего нулевого символа.libc
Функция _cmdname() определяет полный путь, по которому был вызван текущий процесс. Если buff не равен NULL
, _cmdname() копирует путь в буфер, на который указывает buff.
Указатель на путь, используемый при загрузке процесса, или NULL
в случае возникновения ошибки.
![]() | Не изменяйте строку, на которую указывает возвращаемое значение, если в параметр buff передан NULL . |
#include <stdlib.h>#include <stdio.h>#include <unistd.h>#include <limits.h>#include <process.h>int main( void ){size_t maximum_path;char *buff;maximum_path = (size_t)pathconf( "/", _PC_PATH_MAX );buff = (char* )malloc( maximum_path );if ( _cmdname( buff ) ){printf( "I'm \"%s\".\n", buff );} else {perror( "_cmdname() failed" );free( buff );return (EXIT_FAILURE);}free( buff );return (EXIT_SUCCESS);}
Если данный код скомпилировать в исполняемый файл foo:
# ls -F /home/xyzzy/bin/foo foo* # /home/xyzzy/bin/foo I'm "/home/xyzzy/bin/foo".
ЗОСРВ «Нейтрино»
basename(), _cmdfd(), __progname
Предыдущий раздел: Описание API системной библиотеки