ÇÁ·Î±×·¡¹Ö

 3206, 1/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 : 6147     Date : 2003/10/13 06:06



    
3206   SNSÇØÅ·ÀÌ µÇ³ª¿ë? µµ¿ÍÁÖ¼¼¿ä ¤Ð¤Ð¤Ð [2]     ÇÑä¹Î
02/28 343
3205   Ä¡Æ®¿£Áø °í¼öºÐ °è½Ç±î¿ä[1]     rjsdudals123
02/15 196
3204   ¿À·ù Á» ã¾ÆÁÖ¼¼¿ä [1]     marunim
05/30 927
3203 ºñ¹Ð±ÛÀÔ´Ï´Ù  124     minsub87
08/17 1
3202   c¾ð¾î segmentation fault:11 ¿À·ù Áú¹®µå¸³´Ï´Ù![2]     leebk1124
05/21 2011
3201   C++ÇÔ¼ö°ü·Ã Áú¹®ÀÌ¿¡¿ë!![3]     1999dylee
05/11 1846
3200   ÆÄÀ̽ã Áö¹® µå¸³´Ï´Ù.[1]     kksh1107
04/24 1589
3199   ¸®¹ö½ÌÀÇ ¼¼¹ø¤Š ²É - ¿ª¶û-     nninni79
04/20 2289
3198   ´Þ°í³ª ¹®¼­ ½©ÄÚµå[1]     ghjk645
03/24 1609
3197 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î ¼Ò¼ö °ª     adwefq
04/29 0
3196   C¾ð¾î ¼Ò½ºÁú¹®ÀÔ´Ï´Ù![5]     an0088
01/05 5131
3195   C++ /// ºôµå ¿¡·¯ ¤Ð¤Ð[1]     guichanta
08/23 2400
3194 ºñ¹Ð±ÛÀÔ´Ï´Ù  c¾ð¾î µµ¿ÍÁÖ¼¼¿ä¤Ð¤Ð     su6339
04/06 0
3193   ÇØÅ·À» ¹è¿ì·Á°íÇϴµ¥[3]     zoodem04
03/26 4181
3192   c¾ð¾î¸¦ ¹è¿ì°í½Í¾î¿ä ![7]     dwc07238
02/11 4068
3191   ½ºÅÃÀÌ ½×ÀÌ´Â ¹æÇâ¿¡ °üÇؼ­!![1]     hackxx123
12/10 3519
3190   ÇØÅ·Åø¿¡¼­ ip ¾øÀÌ Çϵ忡 ½É´Â°Å¿¡´Â ¾î¶²°Ô ÀÖÀ»±î¿ä?[2]     aowlrgmlals
11/27 4281
3189   C¾ð¾î Çϴµ¥ double ½Ç¼ö¸¦ ³ÖÀºµ¥ ÀÚ²Ù 0.0ÀÌ ³ª¿Í¿ä[2]     fatou10336
11/20 3739
3188   dumpcode.h ÀÌÇØÁ» µµ¿ÍÁÖ¼¼¿ä .[1]     cm6418
11/06 3708
3187   c¾ð¾î ¾Ë°í¸®Áò Áú¹®ÀÔ´Ï´Ù.[3]     alstn8150
10/12 3741
1 [2][3][4][5][6][7][8][9][10]..[161]

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