본문으로 바로가기
homeimage
  1. Home
  2. 컴퓨터/프로그래밍
  3. C언어 심볼릭링크 정보 구하기 readlink()

C언어 심볼릭링크 정보 구하기 readlink()

· 댓글개 · 바다야크

readlink() function in C language

C함수 readlink()는 심볼릭 링크의 원래 위치나 파일 정보를 구합니다. readlink()의 주의할 점은 버퍼에 정보를 저장하면서 NULL 코드를 추가하지 않습니다. 그러므로 반드시 버퍼를 초기화한 후에 호출합니다.

  • 헤더: unistd.h
  • 형태: ssize_t readlink(const char *path_name, char *buff, size_t buff_size)
  • 인수: const char *path 심볼릭 링크 이름
    char *buff 정보를 받아 올 버퍼
    size_t buff_size 퍼버의 크기
  • 반환: ssize_t == -1 실패
    >  0 성공시 정보의 바이트 수

C언어 readlink() 함수 예제

심볼릭 링크 /tmp/lnk_home의 원래 위치를 출력합니다.

#include <stdio.h>
#include <string.h> // memset()  strerror()
#include <unistd.h> // readlink()
#include <errno.h>  // errno

int main( void){
    char buff[1024];
    int  sz_link;
    
    memset( buff, 0, sizeof( buff));
    sz_link = readlink( "/tmp/lnk_home", buff, sizeof( buff));

    if ( 0 < sz_link){
        printf( "return = %d, link=%s\n", sz_link, buff);
    } else {
        printf( "error number= %d, error str= %s\n", errno, strerror( errno));
    }
    return 0;
}

C언어 readlink() 예제 실행 결과

$ gcc test.c
$ ./a.out 
error number= 2, error str= No such file or directory
$ ln -s /home/badayak /tmp/lnk_home
$ ./a.out 
return = 13, link=/home/badayak
$
SNS 공유하기
💬 댓글 개
최근글
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.