open

ëªì¹
     open — ì½ê¸° ëë 기ë¡ì©ì¼ë¡ íì¼ì ì¤ííë¤, ëë ìì±íë¤

íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬
     Standard C Library (libc, -lc)

ìì
     <fcntl.h> int open(const char *path, int flags, ...)

í´ì¤
     path ì ìí´ ì§ì ëë íì¼ì, ì¸ì flags ì ìí´ ì§ì ë ê²ì²ë¼ ì½ê¸° ëë ê¸°ë¡ (ëë
     ê·¸ ì쪽 모ë)ì©ì¼ë¡ ì¤íí´, ê·¸ íì¼ ê¸°ì ì를 í¸ì¶í´ ìíë¡ì¸ì¤ì ëë ¤ì¤ëë¤.
     íì¼ì´ ì¡´ì¬íì§ ìë ê²½ì°ìë íì¼ì ìì±íëë¡(ë¯ì´), flags ì¸ìë¡ ì§ìí  ì ììµëë¤
     (O_CREAT íë그를 ì§ì íë¤).  ì´ ê²½ì°, open ìë 3 ë²ì§¸ì ì¸ì mode_t mode
     íì§ë§ íìíê³ , íì¼ì chmod(2) ê·¸ë¦¬ê³  ì¤ëªëê³  ìëë¡(ë¯ì´) 모ë mode
     ê·¸ë¦¬ê³  ìì±ëì´ íë¡ì¸ì¤ì umask ì¹ì ìí´ ìì ë©ëë¤ (umask(2) (ì)를
     참조).

     ì§ì ë íëê·¸ë ë¤ìì ê°ì ë¼ë¦¬í© (or) ê·¸ë¦¬ê³  ìì±ë©ëë¤.

           O_RDONLY        ì½ê¸° ì ì©ì¼ë¡ ì¤í
           O_WRONLY        ê¸°ë¡ ì ì©ì¼ë¡ ì¤í
           O_RDWR          ì½ê¸°ì 기ë¡ì©ì¼ë¡ ì¤í
           O_NONBLOCK      ì¤íí  ê²½ì°ì ë¸ë¡ íì§ ìëë¤
           O_APPEND        기ë¡ë§ë¤ ë§ë¯¸ì ì¶ê°íë¤
           O_CREAT         íì¼ì´ ì¡´ì¬íì§ ìë ê²½ì°, ìì±íë¤
           O_TRUNC         ì¬ì´ì¦ë¥¼ 0 ì ìë¼ ë²ë¦°ë¤
           O_EXCL          ìì±íë íì¼ì´ ì´ë¯¸ ì¡´ì¬íì ê²½ì°, ìë¬ë¡ íë¤
           O_SHLOCK        ê³µì  ë½ì ìëì ì¼ë¡ ì·¨ëíë¤
           O_EXLOCK        ë°°íì  ë½ì ìëì ì¼ë¡ ì·¨ëíë¤
           O_DIRECT        ìºì¬ì í¨ê³¼ë¥¼ ìë ëë ì¤ì¸ë¤
           O_FSYNC         ë기ì ì¼ë¡ 기ìíë¤
           O_NOFOLLOW      ê¸°í¸ ì°ê²°ì ëë¬ì§ ìëë¤

     O_APPEND (ì)를 ì¤ì í´ íì¼ì ì¤ííë©´(ì), íì¼ìì 기ë¡ì 모ë íì¼ì ë§ë¯¸ì
     ì¶ê°ë©ëë¤.  O_TRUNC íì§ë§ ì§ì ëì´ ìì´ íì¼ì´ ì¡´ì¬íë ê²½ì°, íì¼ì ê¸¸ì´ 0 ì
     ìë¼ ë²ë¦´ ì ììµëë¤.  O_EXCL íì§ë§ O_CREAT (ì)ê³¼ í¨ê» ì¤ì ëì´ ìì´ íì¼ì´
     ì´ë¯¸ ì¡´ì¬íë ê²½ì°, open() (ì)ë ìë¬ë¥¼ ëë ¤ì¤ëë¤. ì´ê²ì ì¬ì©í´, ê°ë¨í
     ë°°íì  ìí¬ì¸ì¤ë¡í¹ë©ì¹´ëì¦ì ì¤íë  ì ììµëë¤.  O_EXCL íì§ë§ ì¤ì ëì´ ìì´
     í¨ì¤ëªì ë§ì§ë§ ìê°ììê° ê¸°í¸ ì°ê²°ì ê²½ì°, ë¹ë¡ ê¸°í¸ ì°ê²°ì´ ì¡´ì¬íì§ ìë
     ì´ë¦ì ê°ë¦¬í¤ê³  ììë¤ê³  í´ë open() (ì)ë ì²ë¦¬ì ì¤í¨í©ëë¤.  O_NONBLOCK
     íëê·¸ê° ì§ì ëì´ ìì´ open() í¸ì¶ì ê²°ê³¼, íë¡ì¸ì¤ê° ì´ë í ì´ì ë¡ ë¸ë¡
     ëë©´(ì) (ì를 ë¤ì´, ë¤ì´ì¼ ì íì ì¼ë¡ ìºë¦¬ì´ë¥¼ 기ë¤ë¦¬ê³  ìë ê²½ì°),
     open() (ì)ë ì¦ììì ëììµëë¤. íë¡ì¸ì¤ê° ì¤íí íì¼ì ìµì´ë¡ ìì¶ë ¥íë ¤ê³  íì ë,
     íë¡ì¸ì¤ë ë¸ë¡ í©ëë¤ (íìì ììë ì¤ì¥ëê³  ìì§ ììµëë¤).

     O_FSYNC íì§ë§ ë§ì¤í¬ì ì¬ì©ëìì ê²½ì°, ëª¨ë  ê¸°ìì ì¦ì ëì¤í¬ì 기ìí´ì ¸
     커ëì 기ìí´ì§ ë°ì´í°ë¥¼ ìºì¬íì§ ìê³ , 기ìí´ì¼ íë¤ ëª¨ë  ë°ì´í°ê° ìë£í
     ëê¹ì§ë ì´ ê¸°ì ìì ëí ëª¨ë  ê¸°ìì ëìì¤ì§ ììµëë¤.

     O_NOFOLLOW íì§ë§ ë§ì¤í¬ì ì¬ì©ëìì ê²½ì°ë¡ open() ìê² ê±´ë¤ì§ ëì íì¼ì´
     ê¸°í¸ ì°ê²°ì ê²½ì°, open() (ì)ë ì¤í¨í©ëë¤.

     íì¼ì ì¤íí  ê²½ì°ì, flock(2) (ì)를 ì¬ì©í ë½ì ì»ì¼ë ¤ë©´ , ê³µì  ë½ì ëí´ìë
     O_SHLOCK, ë°°íì  ë½ì ëí´ìë O_EXLOCK (ì)를 ì¤ì í©ëë¤.  O_CREAT 그리ê³
     íì¼ì ìì±íë ê²½ì°, ë½ ìêµ¬ê° ì¤í¨íë ê² (ì)ë ììµëë¤ (ë¤ë§, í층ì ìë íì¼
     ìì¤íì´ ë½ì ìí¬í¸íê³  ìë ê²½ì°ì íì í©ëë¤).

     ì½ê³  ì°ê¸°ì ìì´ìì ìºì¬ì í¨ê³¼ë¥¼ ìµìí í¹ì ì기 ìí´ì(ë문ì) O_DIRECT
     (ì)를 ì¬ì© ê°ë¥í©ëë¤.  ìì¤íì, ì½ê³  ì°ê¸°íë ë°ì´í°ì ìºì±ì í¼íë ¤ê³
     í©ëë¤.  ë°ì´í°ì ìºì±ì í¼í  ì ìë ê²½ì°, ë°ì´í°ì ìºì¬ì ëí ìí¥ì ìµìíí©ëë¤.
     주ìíì§ ìê³  ì¬ì©íë©´(ì), 본íëê·¸ë ê·¹ì ì¼ë¡ ì±ë¥ì ì´í ìíµëë¤.

     ì ìì ì¼ë¡ ìë£íë©´(ì), open() (ì)ë, íì¼ ê¸°ì ì를 ëíë´ë ë¶ê° ìë ì ì를
     ëë ¤ì¤ëë¤.  ì²ë¦¬ì ì¤í¨íë©´(ì) -1 를 ëë ¤ì¤ëë¤. íì¼ë´ì íì¬ì ìì¹ë¥¼ ë§í¬
     íë¤ íì¼ í¬ì¸í°ë íì¼ì ì ëë¡ ì¤ì ë©ëë¤.

     ìë¡ì´ íì¼ì´ ìì±ëë ê²½ì°, ê·¸ 그룹ì íì¼ì´ í¬í¨ëë ëë í 리ì 그룹ì¼ë¡
     ì¤ì ë©ëë¤.

     ìë¡ì´ 기ì ìë execve(2) ìì¤í ì½ì íµí´ì ì¤íëì±ë¡ ìëë¡(ë¯ì´) ì¤ì ë©ëë¤.
     close(2) (ì)ê³¼ fcntl(2) (ì)를 ì°¸ì¡°í´ ì£¼ì¸ì.

     ìì¤íìë, 1 ê°ì íë¡ì¸ì¤ì ìí´ ëìì ì¤íí  ì ìë¤ íì¼ ê¸°ì ììì ì íì´ ììµëë¤.
     getdtablesize(2) (ì)ë íì¬ì ìì¤í ì íì ëë ¤ì¤ëë¤.

ë°íê°
     ì ìì ì¼ë¡ ìë£íë©´(ì), open() (ì)ë íì¼ ê¸°ì ìì¸ ë¶ê° ìë ì ì를 ëë ¤ì¤ëë¤.
     ì²ë¦¬ì ì¤í¨íë©´(ì) -1 ê° ëë ¤ì£¼ì´ì ¸ ìë¬ë¥¼ ëíë´ê¸° ìí´ì(ë문ì) errno
     íì§ë§ ì¤ì ë©ëë¤.

ìë¬
     ì§ì ì íì¼ì ë¤ìì ê²½ì°ë¥¼ ì ì¸í´ ì¤íë©ëë¤.

     [ENOTDIR]          í¨ì¤ì ìê°ììì¤ì ëë í 리 ì´ì¸ì ê²ì´ í¬í¨ëì´ ììµëë¤.

     [ENAMETOOLONG]     í¨ì¤ëªì ìê°ììê° 255 ìºë¦í°ë¥¼ ëê³  ìëì§, ëë í¨ì¤ëª
                        ì ì²´ê° 1023 ìºë¦í°ë¥¼ ëê³  ììµëë¤.

     [ENOENT]           ì§ì ë íì¼ì´ ì¡´ì¬íì§ ìê³ , O_CREAT ë ì¤ì ëì´ ìì§
                        ììµëë¤.

     [ENOENT]           ì¡´ì¬í´ì¼ íë í¨ì¤ëªì ìê°ììê° ì¡´ì¬íì§ ììµëë¤.

     [EACCES]           ì§ì ë í¨ì¤ìë, ê²ìì´ íê°ëì´ ìì§ ìì ëë í ë¦¬ê° í¬í¨ëì´
                        ììµëë¤.

     [EACCES]           ì구ë í¼ë¯¸ì (ì½ê¸° ëë 기ë¡ì©, ëë ì쪽 모ë)ì´ ì§ì ì
                        íëê·¸ì ê±°ë¶ëê³  ììµëë¤.

     [EACCES]           O_CREAT íì§ë§ ì§ì ëì´ ìì´, íì¼ì´ ì¡´ì¬íì§ ìê³ , íí¸
                        íì¼ì ìì±íë¤ ëë í 리ì ê¸°ë¡ íê°ê° ììµëë¤.

     [ELOOP]            í¨ì¤ëªì ë³íí  ê²½ì°ì ê²ì¶ë ê¸°í¸ ì°ê²°ì´ ë무 ë§ìµëë¤.

     [EISDIR]           ì§ì ì íì¼ì´ ëë í 리ì´ë©°, ì´ê²ì 기ë¡ì©ì¼ë¡
                        ì¤ííëë¡(ë¯ì´) ì¸ìê° ì§ì ëì´ ììµëë¤.

     [EROFS]            ì§ì ë íì¼ì ì½ê¸° ì ì© íì¼ ìì¤íìì ìì´, ê·¸ íì¼ì
                        ìì íë ¤ê³  íê³  ììµëë¤.

     [EMFILE]           íë¡ì¸ì¤ë, ë²ì¨ ì¤íí  ì ìë íì¼ ê¸°ì ìì ê´í ì íì
                        ì´ë¥´ê³  ììµëë¤.

     [ENFILE]           ìì¤í íì¼ íì´ë¸ì´ ë§ë°°ìëë¤.

     [EMLINK]           O_NOFOLLOW íì§ë§ ì§ì ëì´ ëìì´ ê¸°í¸ ì°ê²°ìëë¤.

     [ENXIO]            ì§ì ì íì¼ì ìºë¦í°í í¹ì íì¼ ëë ë¸ë¡í í¹ì íì¼ì´ë©°, ì´
                        í¹ì íì¼ì ì°ê²°ìí¬ ì ììë ëë°ì´ì¤ë ì¡´ì¬íê³  ìì§ ììµëë¤.

     [ENXIO]            ì§ì ë íì¼ì FIFO íì´íë¡, ì´ë íë¡ì¸ì¤ë¡ë¶í°ë ì½ê¸°ì©ì¼ë¡
                        ì¤íëì´ ìì§ ìììë ê´ê³íì§ ìê³ , ì´ê²ì 기ë¡ì©ì¼ë¡
                        ì¤ííë ¤ê³  íìµëë¤.

     [EINTR]            open() ì¡°ìì´ ìê·¸ëì ìí´ ë¼ì´ë¤ì´ ëììµëë¤.

     [EOPNOTSUPP]       O_SHLOCK ëë O_EXLOCK íì§ë§ ì§ì ëììµëë¤ë§, íì¸µì´ ëê³
                        ìë íì¼ ìì¤íì ë½ì ìí¬í¸íê³  ìì§ ììµëë¤.

     [EWOULDBLOCK]      O_NONBLOCK ë¼ê³  O_SHLOCK ì¸ê° O_EXLOCK ì ì´ë
                        쪽ì¸ì§ê° ì§ì ëììµëë¤ë§, íì¼ì ë½ ëê³  ììµëë¤.

     [ENOSPC]           O_CREAT íì§ë§ ì§ì ëì´ ìì´, íì¼ì´ ì¡´ì¬íì§ ìê³ , ìë¡ì´
                        íì¼ì©ì ìí¸ë¦¬ë¥¼ ë°°ì¹ì¤ì ëë í 리ë, ê·¸ ëë í 리를
                        í¬í¨í íì¼ ìì¤íì ê³µê°ì´ ë¨ì§ ì기 ë문ì íì¥í  ì
                        ììµëë¤.

     [ENOSPC]           O_CREAT íì§ë§ ì§ì ëì´ ìì´, íì¼ì´ ì¡´ì¬íì§ ìê³ , íí¸
                        íì¼ì´ ìì±ì¤ì íì¼ ìì¤íìì 미ì¬ì©ì inode ê° ììµëë¤.

     [EDQUOT]           O_CREAT íì§ë§ ì§ì ëì´ ìì´, íì¼ì´ ì¡´ì¬íì§ ìê³ , íí¸
                        ìë¡ì´ íì¼ì©ì ìí¸ë¦¬ë¥¼ ë°°ì¹ì¤ì ëë í 리ë, ê·¸
                        ëë í 리를 í¬í¨íë¤ íì¼ ìì¤íììì ëì¤í¬ ë¸ë¡ì ì ì ì
                        쿼í°ê° ê³ ê°í기 ë문ì íì¥í  ì ììµëë¤.

     [EDQUOT]           O_CREAT íì§ë§ ì§ì ëì´ ìì´, íì¼ì´ ì¡´ì¬íì§ ìê³ , íí¸
                        íì¼ì ìì±ì¤ì íì¼ ìì¤íììì inode ì ì ì ì 쿼í°ê°
                        ê³ ê°íê³  ììµëë¤.

     [EIO]              ëë í 리 ìí¸ë¦¬ë¥¼ ìì±ì¤, ëë O_CREAT ì©ë¬´ì inode 를
                        í ë¹ì¤ì ìì¶ë ¥ ìë¬ê° ë°ìíìµëë¤.

     [ETXTBSY]          íì¼ì ììí ìì (ê³µì  íì¤í¸) íì¼ë¡, open() íì§ë§ 기ë¡
                        ì¡ì¸ì¤ë¥¼ ì구íìµëë¤ë§, íì¼ì ì¤íì¤ìëë¤.

     [EFAULT]           path (ì)ë, íë¡ì¸ì¤ì í ë¹í  ì ììë address ê³µê°ì
                        ë²ìì¸ë¥¼ ê°ë¦¬í¤ê³  ììµëë¤.

     [EEXIST]           O_CREAT (ì)ê³¼ O_EXCL íì§ë§ ì§ì ëì´ ìì´, íì¼ì´
                        ì¡´ì¬í©ëë¤.

     [EOPNOTSUPP]       ìì¼ì ì¤ííë ¤ê³  íìµëë¤ (íìì ììë ì¤ì¥ëê³  ìì§ ììµëë¤).

     [EINVAL]           O_RDONLY, O_WRONLY ë° O_RDWR ì ë¶ì í ì¡°í©ì¼ë¡
                        기ì ì를 ì¤ííë ¤ê³  íìµëë¤.

ê´ë ¨ í목
     chmod(2), close(2), dup(2), getdtablesize(2), lseek(2), read(2),
     umask(2), write(2)

ìì¬
     open() í¨ìë Version 6 AT&T UNIX ê·¸ë¦¬ê³  ë±ì¥íìµëë¤.