Àú¼öÁØÀ¸·Î ÆÄÀÏÀ» ÀÐ°í ¾µ ¶§´Â ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. µÎ ÇÔ¼ö ¸ðµÎ ù ¹ø° Àμö·Î ÆÄÀÏ ÇÚµéÀ» ¿ä±¸Çϴµ¥ _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);
ù ¹ø° Àμö°¡ ½ºÆ®¸² ´ë½Å ÆÄÀÏ ÇÚµéÀ̶ó´Â Á¡¸¸ ´Ù¸¦ »Ó µÎ ÇÔ¼ö ¸ðµÎ »ç¿ëÇÏ´Â ¹æ¹ý°ú ±âÁØ À§Ä¡´Â °í¼öÁØÀÇ °æ¿ì¿Í µ¿ÀÏÇÏ´Ù.