17-3-³ª.Àú¼öÁØ ÆÄÀÏ ¾×¼¼½º

Àú¼öÁØÀ¸·Î ÆÄÀÏÀ» ÀÐ°í ¾µ ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. µÎ ÇÔ¼ö ¸ðµÎ ù ¹ø° Àμö·Î ÆÄÀÏ ÇÚµéÀ» ¿ä±¸Çϴµ¥ _openÀ¸·Î ±¸ÇÑ ÇÚµéÀ» Àü´ÞÇÏ¸é µÈ´Ù.

 

int _read(int fd, void *buffer, unsigned int count);

int _write(int fd, const void *buffer, unsigned int count);

 

_read ÇÔ¼ö´Â ÆÄÀϷκÎÅÍ count ¹ÙÀÌÆ®¸¦ Àоî buffer¿¡ ä¿î´Ù. buffer´Â countº¸´Ù Å©°Å³ª ÃÖ¼ÒÇÑ °°¾Æ¾ß Çϴµ¥ Åë»ó mallocÀ¸·Î ÇÊ¿äÇÑ ¸¸Å­ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÑ ÈÄ »ç¿ëÇÑ´Ù. _read´Â ÆÄÀÏ¿¡¼­ ÀÐÀº ½ÇÁ¦ ¹ÙÀÌÆ® ¼ö¸¦ ¸®ÅÏÇϴµ¥ ÀÌ °ªÀº Åë»ó count¿Í °°Áö¸¸ ÆÄÀÏ ³¡¿¡¼­´Â countº¸´Ù ´õ ÀÛÀ» ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ÆÄÀÏ Å©±â´Â 1234¹ÙÀÌÆ®Àε¥ count°¡ 2000À̶ó¸é _read´Â 2000¹ÙÀÌÆ®¸¦ ÀÐÁö ¸øÇÏ°í 1234¹ÙÀÌÆ®¹Û¿¡ ÀÐÁö ¸øÇÒ °ÍÀÌ´Ù.

ÆÄÀÏ¿¡¼­ ¹ÙÀÌÆ®¸¦ ÀÐÀº ÈÄ FP´Â ÀÐÀº¸¸Å­ µÚ·Î ÀÚµ¿À¸·Î À̵¿ÇÑ´Ù. ¸¸¾à ÆÄÀÏ ³¡À̰ųª ÆÄÀÏ ÇÚµéÀÌ ¹«È¿ÇÏ´Ù¸é -1ÀÌ ¸®ÅϵȴÙ. ÆÄÀÏÀ» ÅؽºÆ® ¸ðµå·Î ¿­¾úÀ» °æ¿ì CR/LF Á¶ÇÕÀº LF·Î º¯È¯µÇ¾î ÀÐÇôÁö¸ç Ctrl+Z¸¦ ¸¸³ª¸é ÆÄÀÏÀÇ ³¡À¸·Î ÀνÄÇÑ´Ù.

_write´Â buffer¿¡ ÀúÀåµÈ count ¹ÙÀÌÆ®¸¸Å­À» ÆÄÀÏ·Î Ãâ·ÂÇÑ´Ù. ¸®ÅÏ°ªÀº ½ÇÁ¦·Î ÆÄÀÏ·Î Ãâ·ÂµÈ ¹ÙÀÌÆ®¼öÀε¥ ÀÌ °ªÀº Åë»ó count¿Í °°Áö¸¸ µð½ºÅ© °ø°£ÀÌ ºÎÁ·ÇÒ °æ¿ì¿¡´Â countº¸´Ù ÀÛÀº °ªÀÏ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â Àú¼öÁØ ÀÔÃâ·Â ÇÔ¼ö·Î ÆÄÀÏÀÇ ³»¿ëÀ» Àоî È­¸éÀ¸·Î Ãâ·ÂÇÑ´Ù.

 

¿¹ Á¦ : readfile

#include <Turboc.h>

#include <io.h>

#include <fcntl.h>

 

void main()

{

     int file;

     char buf[256]={0,};

 

     file=_open("c:\\Test.txt",_O_RDONLY);

     if (file != -1) {

          _read(file,buf,256);

          printf("%s",buf);

          _close(file);

     }

}

 

_open ÇÔ¼ö°¡ »ç¿ëÇÏ´Â Ç÷¡±×µéÀº io.h, fcntl.h ÆÄÀÏ¿¡ Á¤ÀǵǾî ÀÖÀ¸¹Ç·Î ÀÌ Çì´õ ÆÄÀϵéÀ» Æ÷ÇÔ½ÃÄÑ¾ß ÇÑ´Ù. _open ÇÔ¼ö·Î Test.txt ÆÄÀÏÀ» Àбâ Àü¿ëÀ¸·Î ¿¬ ÈÄ _read ÇÔ¼ö·Î 256¹ÙÀÌÆ®¸¸Å­ buf·Î Àоîµé¿´´Ù. Test.txt ÆÄÀÏÀÇ ½ÇÁ¦ ±æÀÌ°¡ 256º¸´Ù ÀÛÀ¸¹Ç·Î ½ÇÁ¦ ÀÐÀº ¹ÙÀÌÆ®¼ö´Â ÀÌ º¸´Ù ´õ ÀÛÀ» °ÍÀÌ´Ù. ¸¸¾à ÆÄÀÏ Å©±â°¡ °¡º¯ÀûÀ̶ó¸é ·çÇÁ¸¦ µ¹¸é¼­ ´Ù ÀÐÀ» ¶§±îÁö _read ÇÔ¼ö¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. ÀÐÀº ¹®ÀÚ¿­À» printf ÇÔ¼ö·Î Ãâ·ÂÇÏ°í _close ·Î ÆÄÀÏÀ» ´Ý¾Ò´Ù.

´ÙÀ½ ¿¹Á¦´Â Àú¼öÁØ ÆÄÀÏ ÀÔÃâ·Â ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ÆÄÀÏÀ» º¹»çÇÑ´Ù. º¹»çÇÒ ¿øº» ÆÄÀÏ°ú ¸ñÀû ÆÄÀÏÀÇ À̸§À» ¸í·ÉÇàÀ¸·Î Àü´ÞÇϴµ¥ ¿¹¸¦ µé¾î a.mpg¸¦ b.mpg¶ó´Â À̸§À¸·Î º¹»çÇÏ°í ½Í´Ù¸é cp a.mpg b.mpg¶ó´Â ¸í·ÉÀ» ³»¸®¸é µÈ´Ù. µµ½ºÀÇ copy ¸í·É°ú »ç¿ë ¹æ¹ýÀÌ µ¿ÀÏÇÏ´Ù.

 

¿¹ Á¦ : cp

#include <Turboc.h>

#include <io.h>

#include <fcntl.h>

#include <sys/stat.h>

 

void main(int argc, char *argv[])

{

     int src, dest;

     int readnum;

     void *buf;

 

     if (argc < 3) {

          printf("º¹»ç ¿øº»°ú ¸ñÀû ÆÄÀÏ À̸§À» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù.\n");

          exit(1);

     }

 

     src=_open(argv[1],_O_RDONLY | _O_BINARY);

     if (src == -1) {

          printf("¿øº» ÆÄÀÏÀ» ¿­ ¼ö ¾ø½À´Ï´Ù.\n");

          exit(1);

     }

 

     dest=_open(argv[2],_O_CREAT | _O_WRONLY | _O_BINARY | _O_TRUNC,

          _S_IWRITE);

     if (dest == -1) {

          printf("¸ñÀû ÆÄÀÏÀ» »ý¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.\n");

          _close(src);

          exit(1);

     }

 

     buf=malloc(60000);

 

     for (;;) {

          readnum=_read(src,buf,60000);

          if (readnum == 0) {

              break;

          }

          _write(dest,buf,readnum);

     }

 

     _close(src);

     _close(dest);

     free(buf);

     printf("%s ÆÄÀÏÀ» %s·Î º¹»çÇß½À´Ï´Ù.\n",argv[1],argv[2]);

}

 

src¿¡ ¿øº» ÆÄÀÏÀ» ¿­°í dest¿¡ ¸ñÀû ÆÄÀÏÀ» ¿¬ ÈÄ src¿¡¼­ 60000¹ÙÀÌÆ®¾¿ Àоî dest·Î ¹Ýº¹ÀûÀ¸·Î Ãâ·ÂÇϱ⸸ ÇÏ¸é µÈ´Ù. _read, _write ÇÔ¼öµéÀº ÀÐ°í ¾´¸¸Å­ FP¸¦ µÚ·Î À̵¿½ÃÅ°¹Ç·Î src¿¡¼­´Â °è¼Ó Àб⸸ ÇÏ°í dest·Î´Â °è¼Ó Ãâ·Â¸¸ ÇÏ¿´´Ù. ¹öÆÛ Å©±â¸¦ ´õ Å©°Ô ´Ã·Á ÁÖ¸é º¹»ç ¼Óµµ°¡ Á¶±Ý ´õ »¡¶óÁú °ÍÀÌ´Ù.

Àú¼öÁØ ÀÔÃâ·Â ÇÔ¼öµµ °í¼öÁØ°ú ¸¶Âù°¡Áö·Î ´ÙÀ½ ¾×¼¼½ºÇÒ À§Ä¡¸¦ FP·Î °¡¸®Å°´Âµ¥ FP¸¦ ¿Å±â¸é ÀÓÀÇÀÇ À§Ä¡¸¦ ¾×¼¼½ºÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ µÎ ÇÔ¼ö´Â Àú¼öÁØ ÆÄÀÏ ÀÔÃâ·ÂÀÇ ÀÓÀÇ Á¢±Ù ÇÔ¼öµéÀÌ´Ù.

 

long _lseek(int fd, long offset, int origin);

long _tell(int fd);

 

ù ¹ø° Àμö°¡ ½ºÆ®¸² ´ë½Å ÆÄÀÏ ÇÚµéÀ̶ó´Â Á¡¸¸ ´Ù¸¦ »Ó µÎ ÇÔ¼ö ¸ðµÎ »ç¿ëÇÏ´Â ¹æ¹ý°ú ±âÁØ À§Ä¡´Â °í¼öÁØÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù.