Á¶°¢ ÄÚµå : readlink
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>C>readlink



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

¼³¸í

readlink ÇÔ¼ö ÀÚüÀÇ ¿¹Á¦¸¸À¸·Î´Â ³Ê¹« ´Ü¼øÇؼ­ Á» È®ÀåÇÑ ¿¹Á¦¸¦ ¸¸µé¾î ºÃ½À´Ï´Ù. °íÁ¤Æø ¹öÆÛ¸¦ »ç¿ëÇÏ¿© ¹öÆÛ¿À¹öÇ÷οì Ãë¾àÁ¡À» ³²°ÜµÎ´Â°Íº¸´Ù. ´ÙÀ½°ú °°ÀÌ °¡º¯ÀûÀÎ ¹öÆÛ°¡ µÇµµ·Ï ±¸ÇöÇÏ´Â°Ô ´ç¿¬È÷ ÁÁ°ÚÁÒ?

readlink »ç¿ë½Ã °¡Àå ÁÖÀÇÇÒ°ÍÀº readlink ÀÇ buffer ¿¡´Â NUL À» ºÙ¿©ÁÖÁö ¾Ê´Â´Ù´Â Á¡ÀϰÍÀÔ´Ï´Ù. À̰͸¸ ÁÖÀÇÇÏ¸é ²Ï À¯¿ëÇϰÚÁÒ.

»ç¿ë¹æ¹ý


ÄÚµå

/*  
 Copyright (C) Information Equipment co.,LTD.  
 All rights reserved.  
 Code by JaeHyuk Cho <mailto:minzkn@infoeq.com>  
 CVSTAG="$Header: /usr/local/mutihost/joinc/modules/moniwiki/data/text/RCS/Code_2fC_2freadlink,v 1.2 2011/02/23 12:07:58 root Exp root $"  
*/  
 
#include <sys/types.h>  
#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  
#include <unistd.h>  
 
#if 0 /* recommand */  
#define def_readlink_start_buffer     (256)  
#define def_readlink_expansion_buffer (8)  
#else /* for test */  
#define def_readlink_start_buffer     (1)  
#define def_readlink_expansion_buffer (1)  
#endif  
 
char *mz_readlink(const char *s_path)  
{  
 char *s_result;  
 size_t s_buffer_size = (size_t)(def_readlink_start_buffer); /* start buffer */  
 int s_replace_bytes;  
 do  
 {  
  s_result = (char *)malloc(s_buffer_size);  
  if(s_result == ((char *)0))break; /* error */  
  s_replace_bytes = readlink(s_path, s_result, s_buffer_size);  
  if(s_replace_bytes == (-1))  
  { /* error */  
   free(s_result);  
   s_result = (char *)0;  
   break;  
  }  
  if(s_replace_bytes < ((int)s_buffer_size))  
  {  
   s_result[s_replace_bytes] = '\0';  
   break; /* ok */  
  }  
  free((void *)s_result);  
  (void)fprintf(stdout, "buffer replace %d -> %d\n", (int)s_buffer_size, ((int)s_buffer_size) + def_readlink_expansion_buffer);  
  s_buffer_size += def_readlink_expansion_buffer;  
 }while(1);  
 return(s_result);  
}  
 
int main(int s_argc, char **s_argv)  
{  
 char *s_linkpath;  
 if(s_argc >= 2)  
 {  
  s_linkpath = mz_readlink(s_argv[1]);  
  if(s_linkpath != ((char *)0))  
  {  
   (void)fprintf(stdout, "%s -> %s (%d character)\n", s_argv[1], s_linkpath, strlen(s_linkpath));  
   free(s_linkpath);  
  }  
  else (void)fprintf(stdout, "can not readlink ! (\"%s\")\n", s_argv[1]);  
 }  
 else (void)fprintf(stdout, "usage: %s <link>\nexample: %s /proc/self/exe\n", s_argv[0], s_argv[0]);  
 return(0);  
}  
 
/* End of source */ 
 

º¯°æ»çÇ×


2005/08/13

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.