À©µµ ÆÄÀÏ ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

Contents

1 À©µµ ÆÄÀÏ ÇÁ·Î±×·¡¹Ö
1.1 ÆÄÀÏ »ý¼º°ú ÀÐ°í ¾²±â
1.1.1 ÆÄÀÏ ¸¸µé±â/¿­±â
1.1.2 Àб⠾²±â
1.1.3 ´Ý±â
1.1.4 ¸®´ª½º ÇÔ¼öÀÇ Â÷ÀÌ
1.1.5 ¿¹Á¦
1.2 ÆÄÀÏ Á¦¾î
1.2.1 ÆÄÀÏ Ã£±â ¹× ÆÄÀÏ Á¤º¸ È®ÀÎ
1.2.2 ÆÄÀÏ ¸µÅ©
1.2.3 ÆÄÀÏ Ä«ÇÇ
1.3 µð·ºÅ丮 °ü¸®
2 ±âŸ
2.1 STDIN_FILENO¿¡ ´ëÇÑ ÀÔÃâ·Â ´ÙÁßÈ­

1 À©µµ ÆÄÀÏ ÇÁ·Î±×·¡¹Ö

¹¹´Ï ¹¹´Ï ÇØµµ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀÇ ÇÙ½ÉÀº ÆÄÀÏ. ¸®´ª½º ÇÁ·Î±×·¡¹Ö¿¡ Àͼ÷ÇÑ °ü°è·Î ¸®´ª½º ÆÄÀÏ ÇÁ·Î±×·¡¹Ö°úÀÇ ºñ±³°¡ ¸¹À» °ÍÀÌ´Ù.

À©µµ¿¡¼­ ÆÄÀÏÀº Ä¿³Î Object·Î °ü¸®µÈ´Ù. ÆÄÀÏÀ» Æ÷ÇÔÇÑ ¸ðµç Ä¿³Î Object´Â Create·Î ½ÃÀÛÇÏ´Â ÇÔ¼ö·Î handleÀ» ¾òÀ» ¼ö ÀÖ´Ù. ÇÚµéÀº Ä¿³Î Object¸¦ °¡¸®Å²´Ù. ÆÄÀϿܿ¡ °ü¸®ÇÏ´Â Ä¿³Î °´Ã¼·Î´Â ¾Æ·¡¿Í °°Àº °ÍµéÀÌ ÀÖ´Ù.
  1. ÆÄÀÌÇÁ °´Ã¼
  2. À̺¥Æ® °´Ã¼
  3. ¾²·¹µå °´Ã¼
  4. ¹ÂÅØ½º °´Ã¼
  5. ÇÁ·Î¼¼½º °´Ã¼
  6. I/O Æ÷Æ® °´Ã¼
  7. ¼¼¸¶Æ÷¾î °´Ã¼

1.1 ÆÄÀÏ »ý¼º°ú ÀÐ°í ¾²±â

1.1.1 ÆÄÀÏ ¸¸µé±â/¿­±â

CreateFileÇÔ¼ö·Î ÆÄÀÏÀ̳ª ÀÔÃâ·Â ÀåÄ¡¸¦ ¿­ ¼ö ÀÖ´Ù. ÀÔÃâ·Â ÀåÄ¡´Â ÆÄÀÏ, ÆÄÀÏ ½ºÆ®¸², µð·ºÅ丮, ¹°¸®ÀûÀÎ µð½ºÅ©, º¼·ý, ÄÜ¼Ö ¹öÆÛ, Å×ÀÌÇÁ µå¶óÀ̹ö, mailslot, pipeµîÀÌ´Ù. 16ºñÆ® ¹öÀü À©µµ¿¡¼­´Â OpenFileÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö Àִµ¥, Áö±ÝÀº °ÅÀÇ »ç¿ëÇÏÁö ¾Ê´Â´Ù.

¸®´ª½ºÀÇ ÆÄÀÏ ¿­±â ÇÔ¼öÀÎ open(2)¿¡ ºñÇØ ¸¹Àº ¸Å°³ º¯¼ö¸¦ ÇÊ¿ä·Î ÇÑ´Ù.
HANDLE WINAPI CreateFile( 
  __in      LPCTSTR lpFileName, 
  __in      DWORD dwDesiredAccess, 
  __in      DWORD dwShareMode, 
  __in_opt  LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
  __in      DWORD dwCreationDisposition, 
  __in      DWORD dwFlagsAndAttributes, 
  __in_opt  HANDLE hTemplateFile 
); 
 
lpfileNameÀ¸·Î ¿­°íÀÚ ÇÏ´Â ÆÄÀÏ À̸§À» ÁöÁ¤ÇÑ´Ù.

dwDesiredAccess·Î ÀÏ¹Ý Á¢±Ù ¹æ¹ýÀ» ÁöÁ¤ÇÒ ÀÖ´Ù. GENERIC_READ¿Í GENERIC_WRITE¸¦ »ç¿ëÇÑ´Ù. ÀüÀÚ´Â Àбâ Àü¿ë, ÈÄÀÚ´Â ¾²±âÀü¿ëÀ¸·Î ¿­±â À§Çؼ­ »ç¿ëÇÑ´Ù. Àбâ¿Í ¾²±â ¸ðµÎ¸¦ À§Çؼ­´Â GENERIC_READ | GENERIC_WRITE¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ¶ÇÇÑ »ó¼¼ Á¢±Ù ¹æ¹ýÀ» ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. »ó¼¼ Á¢±Ù ¹æ¹ýÀº [http]MSDN¹®¼­¸¦ Âü°íÇÑ´Ù.

dwShareMode´Â ¿­¸° ÆÄÀÏ¿¡ ´Ù¸¥ ÇÁ·Î¼¼½º³ª ¾²·¹µå·Î ºÎÅÍÀÇ Á¢±Ù±ÇÇÑÀ» ¼³Á¤ Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. 0À» »ç¿ëÇÑ´Ù¸é ´Ù¸¥ ÇÁ·Î¼¼½º³ª ¾²·¹µå´Â Àбâ, ¾²±â, »èÁ¦¸¦ ÇÒ ¼ö ¾ø´Ù. FILE_SHARED_DELETE, FILE_SHARED_READ, FILE_SHARED_WRITE¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

lpSecurityAttribute´Â º¸¾È¼Ó¼ºÀ» ÁöÁ¤Çϱâ À§ÇØ »ç¿ëÇÑ´Ù. NULLÀ» ÁöÁ¤ÇÏ¸é ±âº» º¸¾È¼Ó¼ºÀÌ »ç¿ëµÇ´Âµ¥, ÀÌ °æ¿ì ÆÄÀÏÀº ÀÚ½Ä ÇÁ·Î¼¼½º¿¡¼­ »ó¼ÓÇÒ ¼ö ¾ø°Ô µÈ´Ù.

dwCreationDispositionÀº »ý¼º ¹æ¹ýÀ» °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÇÑ´Ù. »õ·ÎÀÌ »ý¼ºÇÏ·Á¸é CREATE_NEW¿Í CREATE_ALWAYS¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. CREATE_NEW´Â ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾ÊÀ» °æ¿ì »ý¼ºÇϰí CREATE_ALWAYS´Â ÆÄÀÏÀÌ Á¸ÀçÇÒ°æ¿ì µ¤¾î¾´´Ù´Â Â÷ÀÌÁ¡ÀÌ ÀÖ´Ù. Á¸ÀçÇÏ´Â ÆÄÀÏÀ» ¿­±â À§Çؼ­´Â OPEN_ALWAYS¿Í OPEN_EXISTING¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù. OPEN_ALWAYS´Â ÆÄÀÏÀÌ Á¸ÀçÇÏµç ±×·¸Áö ¾Êµç ÂüÀ» ¹ÝȯÇÑ´Ù. ¸¸¾à ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é, »õ·Î ÆÄÀÏÀ» ¸¸µç´Ù. OPEN_EXISTING´Â Á¸ÀçÇÏ´Â ÆÄÀϸ¸ ¿¬´Ù. ¸¸¾à ÆÄÀÏÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é °ÅÁþÀ» ¹ÝȯÇÑ´Ù. TRUNCATE_EXISTING´Â Á¸ÀçÇÏ´Â ÆÄÀÏÀÇ Å©±â¸¦ 0À¸·Î ÇØ¼­ ¿¬´Ù. ÀÌ °ªÀ» »ç¿ëÇϱâ À§Çؼ­´Â ¹Ýµå½Ã GENERIC_WRITE°¡ ¼³Á¤µÇ¾î ÀÖ¾î¾ß ÇÑ´Ù.

¼º°øÀûÀ¸·Î ¼öÇàµÇ¸é ÆÄÀÏ HANDLEÀ» ¹ÝȯÇÑ´Ù. ½ÇÆÐÇϸé INVALID_HANDLE_VALUE¸¦ ¹ÝȯÇÑ´Ù.

1.1.2 Àб⠾²±â

ReadFileÇÔ¼ö¿Í WriteFileÇÔ¼ö·Î·Î ÀÐ°í ¾µ ¼ö ÀÖ´Ù.
BOOL WINAPI ReadFile( 
  __in         HANDLE hFile, 
  __out        LPVOID lpBuffer, 
  __in         DWORD nNumberOfBytesToRead, 
  __out_opt    LPDWORD lpNumberOfBytesRead, 
  __inout_opt  LPOVERLAPPED lpOverlapped 
); 
 
ÆÄÀÏ ÇÚµé hFile·Î ºÎÅÍ ÀÐÀº µ¥ÀÌÅ͸¦ lpBuffer¿¡ ÀúÀåÇÑ´Ù. ÀÐÀ» µ¥ÀÌÅÍÀÇ Å©±â´Â nNumberOfBytesToRead·Î ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. ½ÇÁ¦ ÀÐÀº µ¥ÀÌÅÍÀÇ Å©±â´Â lpNumberOfBytesRead·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. ¸¶Áö¸· ¸Å°³ º¯¼öÀÎ lpOverlapped´Â ÆÄÀÏÀÌ FILE_FLAG_OVERLAPPED (ºñµ¿±â ¸ðµå)·Î ¿­·ÈÀ» ¶§ »ç¿ëÇÑ´Ù. ÀÚ¼¼ÇÑ ³»¿ëÀº ºñµ¿±â ÀÔÃâ·Â¿¡¼­ ´Ù·çµµ·Ï ÇÑ´Ù. µ¿±â ¸ðµå·Î ¿­¸° ÆÄÀÏÀ̶ó¸é NULLÀ» ÁöÁ¤ÇÑ´Ù.

BOOL WINAPI WriteFile( 
  __in         HANDLE hFile, 
  __in         LPCVOID lpBuffer, 
  __in         DWORD nNumberOfBytesToWrite, 
  __out_opt    LPDWORD lpNumberOfBytesWritten, 
  __inout_opt  LPOVERLAPPED lpOverlapped 
); 
 
ÆÄÀÏ ÇÚµé hFile¿¡ lpBufferÀÇ µ¥ÀÌÅ͸¦ ¾´´Ù. ¾µ µ¥ÀÌÅÍÀÇ Å©±â´Â nNumberOfBytesToWrite·Î ÁöÁ¤ÇÑ´Ù. ½ÇÁ¦ ¾´ µ¥ÀÌÅÍÀÇ Å©±â´Â lpNumberOfBytesWrittenÀ¸·Î ¾Ë¾Æ³¾ ¼ö ÀÖ´Ù. lpOverlapped´Â ºñµ¿±â ¸ðµå¿¡¼­ »ç¿ëÇÑ´Ù. µ¿½Ã ¸ðµå·Î ¿­¸° ÆÄÀÏÀ̶ó¸é NULLÀ» ÁöÁ¤ÇÑ´Ù.

1.1.3 ´Ý±â

´õÀÌ»ó CloseHandle »ç¿ëÇÏÁö ¾Ê´Â ÆÄÀÏÀº CloseHandle·Î ´Ý¾ÆÁØ´Ù.

1.1.4 ¸®´ª½º ÇÔ¼öÀÇ Â÷ÀÌ


ÆÄÀÏ »ý¼º
¸Å°³ º¯¼ö°¡ ¸¹À» »Ó´õ·¯, ¸Å°³ º¯¼ö¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â °ªµéµµ ¸¹¾Æ¼­ ¸®´ª½ºÀÇ openÇÔ¼ö¿¡ ºñ±³Çؼ­ º¹ÀâÇÏ´Ù´Â ´À³¦À» ¹Þ´Â´Ù. ¸®´ª½º¿¡¼­ ÆÄÀÏÀÇ Á¢±ÙÀº °øÀ¯°¡ ¾Æ´Ñ À¯Àúº° ÆÄÀÏ °ü¸® ±ÇÇÑÀÇ ÇüÅ·Π´Þ¼ºÇϴµ¥, ¸®´ª½ºÀÇ À¯Àúº° ±ÇÇÑ ºÎ¿© ¹æ½ÄÀÌ Á» ´õ ¸íÈ®ÇØ º¸ÀδÙ.

¿¹ÄÁµ¥ ¸Å°³ º¯¼ö dwShareMode´Â ÆÄÀÏÀÌ ¿­¸° µ¿¾È ´Ù¸¥ ÇÁ·Î¼¼½º¿Í °øÀ¯¿©ºÎ¸¦ °áÁ¤Çϱâ À§Çؼ­ »ç¿ëÇϴµ¥, ÆÄÀÏ Àá±Ý°ú °°Àº È¿°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù. ÀÌ·± °ªÀ» ±»ÀÌ ¹ø°Å·Ó°Ô ÆÄÀÏ »ý¼º½Ã ¸Å°³ º¯¼ö·Î ¹Þ¾Æ¿Ã Çʿ䰡 ÀÖ³ª¶ó´Â »ý°¢ÀÌ µç´Ù. fcntl(2)·ùÀÇ ÇÔ¼ö·Î ºÐ¸®½ÃŰ´Â°Ô ³´Áö ¾ÊÀ»±î ? ÀÛÀº°Ô ¾Æ¸§´ä´Ù¶ó´Â öÇÐÀ» ÇÔ¼ö¿¡µµ ±¸ÇöÇϰí ÀÖ´Â ¸®´ª½º ȯ°æ¿¡ Àͼ÷ÇØÁ®Àֱ⠶§¹®ÀÏÁöµµ ¸ð¸£°Ú´Ù.

ÆÄÀÏ Á¢±Ù ¹æ½ÄÀº À©µµ¿Í ¸®´ª½º µ¿ÀÏÇÏ´Ù.
À©µµ ¸®´ª½º ¼³¸í
GENERIC_READ O_RDONLY Àбâ Àü¿ë
GENERIC_WRITE O_WRONLY ¾²±â Àü¿ë
GENERIC_READ|GENERIC_WRITE O_RDWR Àбâ/¾²±â Àü¿ë

±âŸ ÆÄÀÏ »ý¼º ¹æ¹ýµéÀÌ´Ù.
À©µµ ¸®´ª½º ¼³¸í
CREATE_ALWAYS O_CREAT Ç×»ó ÆÄÀÏÀ» ¿¬´Ù.
CREATE_EXISTS O_CREAT | O_EXCL ¿¡·¯ °ªÀ¸·Î ÆÄÀÏÀÇ Á¸Àç¿©ºÎ¸¦ È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÁÖ·Î ½Ç¼ö·Î Á¸ÀçÇÏ´Â ÆÄÀÏÀ» µ¤¾î¾²Áö ¾Ê±â À§ÇÑ ¸ñÀûÀ¸·Î »ç¿ëÇÑ´Ù.
TRUNCATE_EXISTING O_TRUNC ÆÄÀÏÅ©±â¸¦ 0À¸·Î ÇÑ´Ù.
FILE_APPEND_DATA O_APPEND ÆÄÀÏÀ» Ãß°¡ ¸ðµå·Î ¿¬´Ù. ÆÄÀÏÀÇ À§Ä¡´Â ¸¶Áö¸·À¸·Î ¼³Á¤ µÈ´Ù.

Àбâ / ¾²±â
¸®´ª½ºÀÇ read(2) write(2)ÇÔ¼ö°¡ ¹Ýȯ °ªÀ¸·Î ½ÇÁ¦ ÀÐ°í ¾´ µ¥ÀÌÅÍÀÇ Å©±â¸¦ ¾Ë¾Æ¿À´Â °Í¿¡ ¹ÝÇØ, À©µµÀÇ ÇÔ¼ö´Â ¸Å°³ º¯¼ö·Î ÀÐ°í ¾´ µ¥ÀÌÅÍÀÇ Å©±â¸¦ °¡Á® ¿Â´Ù´Â °Í ¿Ü¿¡´Â µ¿ÀÏÇÏ´Ù.

1.1.5 ¿¹Á¦

ÆÄÀÏ¿¡ ³»¿ëÀ» Ãß°¡ÇÏ´Â ÇÁ·Î±×·¥
a.txtÀÇ ³»¿ëÀ» Àо b.txtÀÇ ¸¶Áö¸·¿¡ Ãß°¡ÇÏ´Â ÇÁ·Î±×·¥ÀÌ´Ù. a.txt´Â Àб⠸ðµå·Î ¿­°í, b.txt´Â ¾²±â¸ðµå·Î ¿¬´Ù. À̶§ FILE_APPEND_DATA¸¦ ¸Å°³ º¯¼ö °ªÀ¸·Î Á༭ ÆÄÀÏ ÇÚµéÀÇ À§Ä¡¸¦ ¸¶Áö¸·À¸·Î ¸¸µé¾îÁØ´Ù.

#include <windows.h> 
#include <stdio.h> 
 
#define MAX_LINE 1024 
 
int main(int argc, char **argv) 
{ 
    char buf[MAX_LINE]; 
    HANDLE source_fh,dest_fh; 
    int readn, writen; 
    if (argc != 3) 
    { 
        printf("Usge : %s [source file] [dest file]\n", argv[0]); 
        return 0; 
    } 
 
    source_fh= CreateFile( 
        argv[1], 
        GENERIC_READ, 
        0, 
        NULL, 
        OPEN_EXISTING, 
        FILE_ATTRIBUTE_NORMAL, 
        NULL 
        ); 
    if(source_fh == INVALID_HANDLE_VALUE) 
    { 
        printf("FILE Open Error %d\n", GetLastError); 
        return 1; 
    } 
    dest_fh = CreateFile( 
        argv[2], 
        FILE_APPEND_DATA,  // append ¸ðµå·Î ¿¬´Ù. 
        0, 
        NULL, 
        OPEN_EXISTING,       // ÆÄÀÏÀÌ Á¸ÀçÇÏ´ÂÁö È®ÀÎÇÑ´Ù. 
        FILE_ATTRIBUTE_NORMAL, 
        NULL 
        ); 
    if (dest_fh == INVALID_HANDLE_VALUE) 
    { 
        if (GetLastError() == ERROR_FILE_NOT_FOUND)  
            printf("Dest File not found\n"); 
        else  
            printf("Dest File Open Error\n"); 
        return 1; 
    } 
     
 
    while(1) 
    { 
        memset(buf, 0x00, MAX_LINE); 
        ReadFile(source_fh, buf, MAX_LINE-1, &readn, NULL); 
        if(readn <= 0) 
            break; 
        WriteFile(dest_fh, buf, readn, &writen, NULL); 
        printf("%d\n", writen); 
    } 
    return 0; 
} 
 

1.2 ÆÄÀÏ Á¦¾î


1.2.1 ÆÄÀÏ Ã£±â ¹× ÆÄÀÏ Á¤º¸ È®ÀÎ

CreateFile·Îµµ ÆÄÀÏ Á¸À縦 È®ÀÎÇÒ ¼ö ÀÖÁö¸¸ °¡´ÉÇϸé Àü¿ë ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â °É ±ÇÀåÇÑ´Ù.

FindFirstFile
HANDLE WINAPI FindFirstFile 
{ 
  __in   LPCTSTR lpFileName, 
  __out  LPWIN32_FIND_DATA lpFindFileData 
}; 
 
winapiÇÔ¼ö·Î ¸µÅ© ¾øÀÌ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â ÀåÁ¡ÀÌ ÀÖ´Ù. ¸Å°³ º¯¼ö lpFindFileData·Î ãÀº ÆÄÀÏÀÇ Á¤º¸¸¦ ¾Ë ¼ö ÀÖ´Ù. ÆÄÀÏ Á¤º¸´Â WIN32_FIND_DATA±¸Á¶Ã¼¸¦ Âü°íÇÑ´Ù.

#include <windows.h> 
#include <stdio.h> 
 
int main(int argc, char **argv) 
{ 
    WIN32_FIND_DATA FindFileData; 
    HANDLE fh; 
    SYSTEMTIME SystemTime; 
 
    if(argc != 2) 
    { 
        fprintf(stderr, "Usage : %s [file name]\n", argv[0]); 
        return 1; 
    } 
 
    fh = FindFirstFile(argv[1], &FindFileData); 
    if(fh == INVALID_HANDLE_VALUE) 
    { 
        printf("Error %d\n", GetLastError()); 
        return 1; 
    } 
    printf("File Name : %s\n", FindFileData.cFileName); 
    printf("File Size : %d\n", FindFileData.nFileSizeLow); 
    FileTimeToSystemTime(&FindFileData.ftCreationTime,&SystemTime); 
    printf("File Creeation time : %d/%d/%d \n",  
            SystemTime.wYear, SystemTime.wMonth, SystemTime.wDay); 
 
    FindClose(fh); 
} 
 
´Ü ÆÄÀÏ ÇÚµéÀ» ¹ÝȯÇϱ⠶§¹®¿¡ FindCloseÇÔ¼ö·Î ÇÚµéÀ» ´Ý¾ÆÁà¾ß ÇÑ´Ù.

1.2.2 ÆÄÀÏ ¸µÅ©

À©µµ´Â CreateSymbolicLink¿Í CreateHardLinkÇÔ¼ö·Î ½Éº¼¸¯ ¸µÅ©¿Í ÇÏµå ¸µÅ©ÆÄÀÏÀ» ¸¸µé ¼ö ÀÖ´Ù.

½Éº¼¸¯ ¸µÅ© ¸¸µé±â
BOOLEAN WINAPI CreateSymbolicLink( 
  __in  LPTSTR lpSymlinkFileName, 
  __in  LPTSTR lpTargetFileName, 
  __in  DWORD dwFlags 
); 
 
lpTargetFileName À̸§À» °¡Áö´Â ¿øº» ÆÄÀÏÀ» °¡¸®Å°´Â lpSymlinkFileNameÀ̸§ÀÇ ½Éº¼¸¯ ¸µÅ© ÆÄÀÏÀ» ¸¸µç´Ù. ¿øº» ÆÄÀÏÀÌ µð·ºÅ丮ÀÏ °æ¿ì dwFlagsÀÇ °ªÀ» SYMBOLIC_LINK_FLAG_DIRECTORY·Î ÇÏ¸é µÈ´Ù. ÀÏ¹Ý ÆÄÀÏÀ̶ó¸é 0À¸·Î ÇÑ´Ù.

windows vista, windows server 2008 À̻󿡼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
#include <stdio.h> 
#include <windows.h> 
 
int main(int argc, char **argv) 
{ 
    if(argv != 3) 
    { 
        fprintf(stderr, "Usage : %s [target file name] [symbolic name]\n", argv[0]); 
        return 1; 
    } 
 
    if(CreateSymbolicLink(argv[2], argv[1], 0) == 0) 
    { 
        printf("Error %d\n", GetLastError());     
    } 
    return 0; 
 
} 
 

ÇÏµå ¸µÅ© ¸¸µé±â
BOOL WINAPI CreateHardLink( 
  __in        LPCTSTR lpFileName, 
  __in        LPCTSTR lpExistingFileName, 
  __reserved  LPSECURITY_ATTRIBUTES lpSecurityAttributes 
); 
 
lpExistingFileNameÀ̸§À» °¡Áö´Â ¿øº»ÆÄÀÏÀÇ lpFileName ÇÏµå ¸µÅ©¸¦ ¸¸µç´Ù. lpSecurityAttributes´Â »ç¿ëÇÏÁö ¾Ê´Â´Ù. ¹Ýµå½Ã NULLÀ» ¾´´Ù.


windows 2000 professional, windows 2000 server À̻󿡼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

À¯´Ð½º¿¡¼­ ¸µÅ©´Â ¸Å¿ì ¿À·¡Àü ºÎÅÍ »ç¿ëµÇ¾ú´Âµ¥, À©µµ´Â ºñ±³Àû ÃÖ±Ùµé¾î Áö¿øµÇ¾ú´Ù. ÀÌÀ¯¸¦ È®ÀÎÇØ ºÁ¾ß ÇÒ °Í °°´Ù. ¿¹Á¦ ÇÁ·Î±×·¥Àº xp¿¡¼­ ½ÇÇàµÇÁö ¾Ê¾Ò´Ù.

1.2.3 ÆÄÀÏ Ä«ÇÇ

  • ¸µÅ©¿Í Ä«ÇÇÀÇ ´Ù¸¥ Á¡¿¡ ´ëÇØ¼­ ¾Ë¾Æº»´Ù.
  • .. ±×³É ReadFile, WriteFileÇÔ¼ö·Î ±¸ÇöÇÏ´Â°Ô ³´Áö ¾ÊÀ»±î¶õ »ý°¢ÀÌ µç´Ù.

1.3 µð·ºÅ丮 °ü¸®

  • ¸®´ª½ºÀÇ opendir¿¡ ÇØ´çÇÏ´Â ÇÔ¼ö°¡ ÀÖÀ¸¸®¶ó »ý°¢µÈ´Ù. ¾Ë¾Æº¸ÀÚ.

2 ±âŸ

2.1 STDIN_FILENO¿¡ ´ëÇÑ ÀÔÃâ·Â ´ÙÁßÈ­

äÆÃ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥À» ¸¸µç´Ù°í °¡Á¤Çغ¸ÀÚ. äÆÃÀº Ç¥ÁØÀԷ°ú ¼ÒÄÏ ÀÔÃâ·ÂÀ» µ¿½Ã¿¡ ó¸®ÇØ¾ß ÇÑ´Ù. ¸®´ª½º´Â ¼ÒÄϵµ ÆÄÀÏÀÌ´Ï select¸¦ ÀÌ¿ëÇÑ ÀÔÃâ·Â ´ÙÁßÈ­·Î °£´ÜÈ÷ ¹®Á¦Èê ÇØ°áÇÒ ¼ö Àִµ¥, ¾Æ À©µµ´Â ±×°Ô ¾ÈµÈ´Ù.

À©µµ´Â STDIN_FILENO¸¦ ºñ ºÀ¼â·Î ÇÒ ¼ö ¾ø´Ù. ÀÏ´Ü ÆÄÀϰú ¼ÒÄÏÀ» ´Ù¸£°Ô Ãë±ÞÇϱ⠶§¹®¿¡ select¸¦ ÀÌ¿ëÇÒ ¼öµµ ¾ø°í, ºñ ºÀ¼â·Î ÇÒ ¼öµµ ¾øÀ¸´Ï °á±¹ ¾²·¹µå·Î ó¸®ÇÏ´Â ¼ö ¹Û¿¡ ¾øÀ» °Í °°´Ù. ´Ù¸¥ ¹æ¹ýÀÌ ÀÖÀ»·Á³ª ?

Âü°í·Î Ç¥ÁØÀÔ·ÂÀº ReadFileEx¿¡¼­µµ ºí·°µÇ¸ç, Áßø ÀÔÃâ·Â ¿¡¼­µµ ºí·°µÈ´Ù°í ÇÑ´Ù. ÂÁ. Á» ´õ Å×½ºÆ®¸¦ ÇØºÁ¾ß °Ú´Âµ¥, ¿ì¼±Àº ¾²·¹µå·Î ±¸Çö ÇϷôÙ.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.