Skip to content

Latest commit

ย 

History

History
73 lines (47 loc) ยท 2.43 KB

File metadata and controls

73 lines (47 loc) ยท 2.43 KB

Chapter4. ์‹œ์Šคํ…œ ์ •๋ณด

  • uid ๊ฒ€์ƒ‰

    • uid : ๋งŒ๋“  ์‚ฌ๋žŒ์˜ id
  • euid : ์ง€๊ธˆ ์‹คํ–‰์ค‘์ธ ์‚ฌ๋žŒ์˜ id

    #include<sys/types.h>
    #include<unistd.h>
    uid_t getuid(void);
    uid_t geteuid(void);
  • guid ๊ฒ€์ƒ‰

  • gid : ๋งŒ๋“  ์‚ฌ๋žŒ์˜ ๊ทธ๋ฃน id

  • egid : ์ง€๊ธˆ ์‹คํ–‰์ค‘์ธ ์‚ฌ๋žŒ์˜ ๊ทธ๋ฃน id

    #include<sys/types.h>
    #include<unistd.h>
    gid_t getgid(void);
    gid_t getegid(void);
  • Directory tree

    • sub directory : directory ๋ฐ”๋กœ ๋ฐ‘์— directory

    • descendant : directory ๋ฐ‘์— ๋ชจ๋“  sub directory

    • ์‚ฌ์šฉ๋ฒ•

      #include <ftw.h>
      int ftw(const char *path, int(*func)(), int depth);
    • path์—์„œ ์‹œ์ž‘ํ•ด์„œ recursiveํ•˜๊ฒŒ subdirectory์™€ file๋“ค์— func() ํ•จ์ˆ˜๋ฅผ ์ ์šฉ

    • ์‹œ์ž‘์ . cwd๋ถ€ํ„ฐ ํƒ์ƒ‰ํ•˜๊ฒ ๋‹ค ํ•˜๋ฉด "." ์ฃผ๋ฉด ๋œ๋‹ค. ์•„๋‹ˆ๋ฉด dir ์ด๋ฆ„

    • func()๋Š” ๋ฌด์กฐ๊ฑด int๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ ํฌ์ธํ„ฐ. ํ•จ์ˆ˜์‹œ์ž‘์ฃผ์†Œ๋Š” ํ•จ์ˆ˜ ์ด๋ฆ„์ด๋‹ค(๋ฐฐ์—ด์‹œ์ž‘์ฃผ์†Œ๋Š” ๋ฐฐ์—ด ์ด๋ฆ„์ธ ๊ฒƒ ์ฒ˜๋Ÿผ) ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด์„œ ์ธ์ž๋กœ ๋„˜๊ฒจ์ฃผ๋ฉด๋œ๋‹ค

    • depth : ftw์— ์˜ํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ file descriptor ์ˆ˜

      ํŒŒ์ผ ํ…Œ์ด๋ธ” ๋ฐฐ์—ด์€ ๋ฐฐ์—ด์ด๋‹ˆ๊นŒ ๋ฌด์ œํ•œ์œผ๋กœ ํŒŒ์ผ์„ ์—ฌ๋Š”๊ฒŒ ๋ถˆ๊ฐ€๋Šฅํ•จ. ๊ทธ๋ž˜์„œ depth๋งŒํผ openํ•˜๊ณ  closeํ•˜๋ฉด์„œ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ

  • int func() ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

      int func (const char *name, const struct stat *sptr,int type) { }
    • ํ•ญ์ƒ ๋งˆ๋ฌด๋ฆฌ๋Š” return 0; (OS๊ฐ€ 0์„ ๋ฐ˜ํ™˜๋ฐ›์•„์•ผ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•  ๊ฒƒ)

    • ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ค๋ฉด ftw(".", list, 1) ์‹œ์Šคํ…œ ์ฝœ์„ ํ˜ธ์ถœํ•˜๋‹ˆ๊นŒ ๊ทธ ์ˆœ๊ฐ„ OS์—์„œ control์„ ๊ฐ€์ ธ๊ฐ

      • ftw ์‹œ์Šคํ…œ ํ˜ธ์ถœ ๋‚ด๋ถ€์—๋Š” while๋ฌธ์œผ๋กœ listํ•จ์ˆ˜(ํ”„๋กœ๊ทธ๋žจ์— ์ž์ฒด์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ ํ•จ์ˆ˜)๋ฅผ ๊ณ„์†ํ•ด์„œ ์‹คํ–‰์‹œํ‚จ๋‹ค
    • ๋งค๋ฒˆ ํ˜ธ์ถœ ์‹œ, ํŒŒ์ผ/dir์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ค€๋‹ค

      • char * name : ํŒŒ์ผ/dir ์ด๋ฆ„
      • const struct stat * status : ํŒŒ์ผ/dir์— ๋Œ€ํ•œ stat ์ •๋ณด๋ฅผ OS๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ํฌ์ธํ„ฐ ์ฃผ์†Œ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
      • int type : ํŒŒ์ผ์ธ์ง€, ์•„๋‹Œ์ง€ ์•Œ๋ ค์คŒ
        • type = FTW_F: object๊ฐ€ ํŒŒ์ผ์ž„
        • type = FTW_D: object๊ฐ€ directory์ž„
        • type = FTW_DNR: object๋Š” ์ฝ์–ด์˜ฌ ์ˆ˜ ์—†๋Š” directory. permission 4๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ
        • type = FTW_NS: ex) stat๊ด€๋ จ๋œ ์ •๋ณด๋ฅผ ์–ป์–ด์˜ฌ ์ˆ˜ ์—†๋Š” symlink ํƒ€์ž…. symlink์ธ๋ฐ ๊ฐ€๋ฆฌํ‚ค๋Š” ํŒŒ์ผ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ