반응형

basename(3)

#include <libgen.h>

char *basename(char *path);

basename(3) 함수는 path의 끝 node의 이름을 얻는 함수입니다. path가 파일 정보이면 파일명을 얻는 함수입니다. return된 문자열은 null-terminated 문자열입니다.

 

dirname(3)함수가 directory명을 얻는 함수라면, basename(3)은 파일명을 얻을 때에 주로 사용하는 함수입니다.

 

동작 예).

   path                       dirname( )        basename( )
   /usr/include/stdio.h       /usr/include      stdio.h
   /usr/include               /usr              include
   /usr/                      /                 usr
   usr                        .                 usr
   /                          /                 /
   .                          .                 .
   ..                         .                 ..
   [null]                     .                 .

 

파라미터

path
    - 파일에 대한 상대 path 또는 절대 path

 ※주의: path변수의 값은 basename(3) 함수 호출 후에 변형이 일어날 수 있으므로 
         원본에 변형이 일어나면 안되는 경우에는 복사본을 파라미터로 전달하기 바랍니다.

 

RETURN

문자열
    - 파일 명에 대한 null-terminated 문자열

 

 


활용 예제

 

Sample) 명령어만 잘라내기

#include <stdio.h>
#include <string.h>

#include <libgen.h>

int main(int argc, char **argv)
{
    char path[1024];
    char program_name[1024];
    
    strcpy(path, argv[0]);
    strcpy(program_name, basename(path));
    
    printf("%s\n", program_name);
    
    return 0;
}

위의 예제는 프로그램을 실행할 때에 sample 또는 ./sample 또는 /home/user1/bin/sample 처럼 실행하더라도 명령어만 잘라내고 싶은 경우에 사용할 수 있다.

 

 


see also :

    File 속성 정보 및 파일 관리 Library

    Directory 정보 조회 및 관리 Library

    System Call File I/O Library

    Stream File I/O Library

 

 

 

반응형

'C언어 header > libgen.h' 카테고리의 다른 글

dirname(3) - path에서 directory 부분 얻기  (0) 2019.09.23
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,