ÇÁ·Î±×·¡¹Ö

 3206, 7/161 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   indra
   http://indra.linuxstudy.pe.kr
   [re] lseek¿¡ °üÇÑ Áú¹®ÀÔ´Ï´Ù~

http://www.hackerschool.org/HS_Boards/zboard.php?id=QNA_programming&no=146 [º¹»ç]


SEEK_CUR Àº Current ¿¡ ´ëÇÑ ÆÄÀÏ offset ¹èÄ¡¶ó´Â°ÍÀ» ¾Ë°í °è½Ã°ÚÁö¿ä.
ÇØ´ç file descriptor ¿¡ ´ëÇØ open() ¸¸ ¼öÇàÇÏ°í
±× ¿Ü¿¡ ¾Æ¹«·± ¼öÇàÀ» ÇÏÁö ¾Ê¾Ò±â ¶§¹®¿¡ lseek() ÀÇ °á°ú´Â 0 ÀÌ µË´Ï´Ù.

man lseek À» Çغ¸½Ã¸é lseek ÀÇ SEEK_CUR whence ¿¡ ´ëÇØ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÕ´Ï´Ù.

       SEEK_CUR
              The offset is set to its current location plus off-
              set bytes.

Áï, ÇöÀç À§Ä¡¿¡ offset ¹ÙÀÌÆ®¸¦ Ç÷¯½ºÇÏ¿© ÇöÀç À§Ä¡ ¿ÀÇÁ¼ÂÀ» °áÁ¤ÇÕ´Ï´Ù.

SEEK_SET °ú ´Ù¸¥Á¡Àº
SEEK_SET Àº offset À¸·Î ÁÖ¾îÁø ¸¸Å­ À̵¿Çϴ°ÍÀÌ°í
SEEK_CUR Àº ÇöÀç À§Ä¡¿¡¼­ offset À» plus ÇÑ ¸¸Å­ À̵¿ÇÕ´Ï´Ù.

open() ½Ã½ºÅÛ ÄÝ ¼öÇà Á÷ÈÄ ¿ÀÇÁ¼ÂÀº Ç×»ó ÃʱâÈ­ µÇ¾î ÀÖ´Â 0 À̸ç,
ÀÌ°ÍÀ» lseek() À» »ç¿ëÇØ °¢ À§Ä¡ ¿ÀÇÁ¼ÂÀ» ¿Å±æ¼ö ÀÖ½À´Ï´Ù.

½Ç ¿¹Á¦ ÀÔ´Ï´Ù.

[indra@indra test]$ cat test.txt
blahblah
[indra@indra test]$ cat a.c
#include <fcntl.h>
#include <stdio.h>

#define FNAME   "test.txt"

int main()
{
    off_t offs;
    char *str = "indra";
    int fd;

    fd = open(FNAME, O_RDWR|O_APPEND);
    write(fd, str, strlen(str));
    offs = lseek(fd, 0, SEEK_CUR);
    printf("SEEK_CUR: %d\n", offs);
    offs = lseek(fd, 3, SEEK_CUR);
    printf("SEEK_CUR: %d\n", offs);
    close(fd);
    return(0);
}
[indra@indra test]$ ./a
SEEK_CUR: 14
SEEK_CUR: 17
[indra@indra test]$ cat test.txt
blahblah
indra[indra@indra test]$

Âü°íÀûÀ¸·Î SEEK_END ¿¡ ´ëÇØ »çÁ·À» ºÙÀÌÀÚ¸é,

open(filename, O_RDWR|O_APPEND); ´Â

open(filename, O_RDWR);
lseek(fd, 0, SEEK_END); ¿Í °°½À´Ï´Ù.

±×¸®°í test code ¿¡¼­ close() °¡ ºüÁ³³×¿ä.
test code ¶ó Çصµ ÆÄÀÏ ´Ù·ç½Ç¶§ ÀÛ¾÷ Á¾·á ÈÄ close() ¸¦ »ç¿ëÇϽô ½À°üÀ»
±â¸£´Â°ÍÀÌ ÁÁ½À´Ï´Ù.

Áñ°ø ÇϽñæ...

>Çб³¿¡¼­ ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ̶õ´Â°É ¹è¿ì°íÀִµ¥.. @_@;; Á¦°¡ ¸Ó¸®°¡ ³ª»Û°ÇÁö Àß ¸ð¸£°Ú³»¿ä.
>
>#include<sys/types.h>
>#include<sys/stat.h>
>#include<fcntl.h>
>#include<string.h>
>#include<stdio.h>
>#include<unistd.h>
>
>int main(int argc, char * argv[])
>{
>        off_t offset[2];
>        char * buffer = "that's the way it is";
>        int file = open(argv[1], O_RDWR | O_APPEND);
>        offset[0] = lseek(file, 0, SEEK_CUR);
>        write(file, buffer, strlen(buffer));
>        offset[1] = lseek(file, 0, SEEK_CUR);
>        printf("offset before writing: %ld\n", offset[0]);     //ÆÄÀÏÀ» ¾²±â Àü¿¡ ¿É¼Â °ª
>        printf("offset after writing: %ld", offset[1]);      //ÆÄÀÏÀ» ¾²°í ³­ ÈÄÀÇ ¿É¼Â °ª
>        return 0;
>}
>
>
>Àú´Â
>open(argv[1], O_RDWR | O_APPEND) À¸·Î  ¿­°í ³­ÈÄÀÇ ¿É¼ÂÀÇ °ªÀº ÆÄÀÏÀÇ ³¡À» °¡¸®Å°°í ÀÖ´Â °Í °°¾Æ È®ÀÎ »ï¾Æ ½ÇÇàÀ» Çغ¸¾Ò´õ´Ï
>
>
>[root@localhost practice]# ./a.out test
>offset before writing: 0
>offset after writing: 46
>
>
>ÀÌ·± °á°ú°¡ ³ª¿Ô½À´Ï´Ù.
>O_APPENDÀ» ÀÌ¿ëÇؼ­ openÇÔ¼ö¸¦ ¼öÇàÇصµ lseek(fd, 0, SEEK_CUR)ÀÇ °á°ú°ªÀº ÆÄÀÏÀ» ¾²±âÀü±îÁö´Â 0ÀÎÁö ±Ã±ÝÇÕ´Ï´Ù.

  Hit : 6146     Date : 2003/10/13 06:06



    
3086   ÇãÁ¢ÇÑ Áú¹®ÀÔ´Ï´Ù.[3]     blue_star
10/03 4531
3085   ¹è¿­¿¡ ´ëÇؼ­[7]     3cushion
10/04 4580
3084   Ãʺ¸ Áú¹®ÀÔ´Ï´Ù.(¹®ÀÚ¿­ ¹è¿­¿¡ ´ëÇؼ­...)[1]     kgh9090
10/05 3918
3083     [re] Ãʺ¸ Áú¹®ÀÔ´Ï´Ù.(¹®ÀÚ¿­ ¹è¿­¿¡ ´ëÇؼ­...)[3]     hkpco
10/05 3775
3082   Áú¹®ÀÔ´Ï´Ù.[1]     blue_star
10/05 4030
3081     [re] Ãʺ¸ Áú¹®ÀÔ´Ï´Ù.(¹®ÀÚ¿­ ¹è¿­¿¡ ´ëÇؼ­...)     kgh9090
10/05 4192
3080   ¸®´ª½º»ó DES¾Ë°í¸®Áò(C·Î ±¸¼º)..¾î¶»°Ô ÄÄÆÄÀÏ ÇÏ´ÂÁö...     msgon
10/06 4160
3079     [re] ¸®´ª½º»ó DES¾Ë°í¸®Áò(C·Î ±¸¼º)..¾î¶»°Ô ÄÄÆÄÀÏ ÇÏ´ÂÁö...[4]     indra
10/06 5773
3078   Áú¹®ÀÌ¿©[5]     blue_star
10/08 4335
3077   [Áú¹®] gcc 2.96ÀÌ ±ò·ÁÀִ°÷¿¡¼­ 2.91¹öÀüÀ¸·Î ÄÄÆÄÀÏÇÒ·Á¸é...     vana94
10/10 3584
3076   ÇÁ·Î±×·¥ ¿ë¾î Áú¹®..     wnreh2ehd
10/11 4167
3075     [re] ÇÁ·Î±×·¥ ¿ë¾î Áú¹®..[5]     hkpco
10/11 4075
3074   ºñÁÖ¾ó C++ 6.0 ´Ù¿î¹ÞÀ»¼öÀÖ³ª¿µ?[1]     blue_star
10/11 8152
3073     [re] [Áú¹®] gcc 2.96ÀÌ ±ò·ÁÀִ°÷¿¡¼­ 2.91¹öÀüÀ¸·Î ÄÄÆÄÀÏÇÒ·Á¸é...     indra
10/11 4147
3072     [re] ºñÁÖ¾ó C++ 6.0 ´Ù¿î¹ÞÀ»¼öÀÖ³ª¿µ?     ¼ÒÀ¯
10/12 10337
3071   º£ÀÌÁ÷Àº ¾î´À ºÐ¾ß¿¡¼­ »ç¿ëÇØ¿ä?     jgminam
10/13 4092
3070   lseek¿¡ °üÇÑ Áú¹®ÀÔ´Ï´Ù~     bsshq7
10/13 4390
    [re] lseek¿¡ °üÇÑ Áú¹®ÀÔ´Ï´Ù~     indra
10/13 6145
3068       ¾Ñ Á¤¸» °¨»çÇÕ´Ï´Ù~     bsshq7
10/13 3621
3067   ÀÌ°Ç Áö±Ý Á¦°¡ ¸· ¿À´Ã ¹è¿î switch ¹®À» ÀÌ¿ëÇÑ °è»ê ÇÁ·Î±×·¥Àε¥ ½ÇÇàÀÌ Àß ¾È´ë´Â±º¿ä Á¶±Ý¸¸ µµ¿ÍÁÖ¼¼¿ä[1]     JoyanG
10/14 3992
[1][2][3][4][5][6] 7 [8][9][10]..[161]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org