open

OPEN(2)                          System calls                          OPEN(2)



ì´ë¦
       open, creat - íì¼ì´ë ì¥ì¹ë¥¼ ì´ê³  ìì±íë¤.

ì¬ì©ë²
       #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

       int open(const char *pathname, int flags);
       int open(const char *pathname, int flags, mode_t mode);
       int creat(const char *pathname, mode_t mode);

ì¤ëª
       open() ìì¤í í¸ì¶ì íì¼ ëì¤í¬ë¦½í°ìì ê²½ë¡ëª ì íì ì¬ì©ëë¤. í¸ì¶ì´
       ì±ê³µíë©´, ë°íëë íì¼ ëì¤í¬ë¦½í°ë íë¡ì¸ì¤ë¥¼ ìí´ ì´ë¦¬ì§ ìëë¤. ì´ í¸ì¶ì
       ëª¨ë  ë¤ë¥¸ íë¡ì¸ì¤ê° ê³µì íì§ ìë ìë¡ì´ íì¼ì ìì±íë¤.

       flags ë íì¼ì read-only, write-only, read/writeë¡ ì¬ë ìì²ì íë O_RDONLY,
       O_WRONLY or O_RDWR ì¤ íëì´ë¤.

       flags ë ëí ë¤ìì¤ íëì´ìì ê°ì§ bitwise-or'd ì¼ë°ì§ 모른ë¤:

       O_CREAT
              íì¼ì´ ìì¼ë©´ ìì±ë ê²ì´ë¤.

       O_EXCL When used with O_CREAT 를 ì¬ì©í  ë, íì¼ì´ ì´ë¯¸ ì¡´ì¬íë¤ë©´
              ìë¬ë íì¼ì ì¬ëë° ì¤í¨í  ê²ì´ë¤.  O_EXCL ë NFS íì¼ ìì¤íì 깬ë¤.
              ì ê¸íì¼ì ì¬ì©íë automicíì¼ ì ê¸ì ì¤íí기ìí ì루ìì ê°ì íì¼ ìì¤íì
              í¹ì íì¼ì ìì±í기 ìí¨ì´ë¤.

       O_NOCTTY
              ê²½ë¡ëª ì´ í°ë¯¸ë ì¥ì¹ë¥¼ ì¸ê¸íë¤ë©´ tty(4) 를 본ë¤.

       O_TRUNC
              íì¼ì´ ì´ë¯¸ ì¡´ì¬íë¤ë©´ ê·¸ê²ì ìëµë  ê²ì´ë¤.

       O_APPEND
              íì¼ì´ ì¶ê°ëª¨ëì ì´ë ¤ìë¤. ê°ê° ê¸°ë¡ ë기 ì ì íì¼í¬ì¸í°ë lseek
              ê° ìë ê²ì²ë¼ íì¼ì ëì ìì¹íë¤.  O_APPEND ë ì ì´ë íë ì´ìì íë¡ì¸ì¤ê°
              íì¼ì ë°ì´í를 ì¶ê°íë¤ë©´ NFSíì¼ ìì¤íìì ë³ì§(correpted)ë íì¼ì
              ì´ëë¤. ì´ê²ì NFSê° íì¼ì ì¶ê°ë¥¼ ì§ìíì§ ì기ë문ì´ë¤.  ê·¸ëì
              í´ë¼ì´ì¸í¸ 커ëì ê·¸ê²ì ì뮬ë ì´í¸íë¤.

       O_NONBLOCK or O_NDELAY
              íì¼ì ë¹ë¸ë¡ 모ëë¡ ì´ë¦°ë¤.

       O_SYNC íì¼ì ìì¶ë ¥ ë기í를 ìí´ ì´ë¦°ë¤. íì¼ ëì¤í¬ë¦½í° ê²°ê³¼ 모ë
              writes ë ë°ì´íê° ë¬¼ë¦¬ì ì¼ë¡ íëì¨ì´ë¡ 기ë¡ë  ëê¹ì§ í¸ì¶
              íë¡ì¸ì¤ë¥¼ ë¸ë¡í í  ê²ì´ë¤.  ìëì RESTRICTIONS를 본ë¤.

       O_NOFOLLOW
              ê²½ë¡ëªì´ ì¬ë³¼ë¦ ë§í¬ë¼ë©´, íì¼ì´ê¸°ë ì¤í¨íë¤. ì´ê²ì 리ëì¤
              ë²ì  2.1.126ì ì¶ê°ë freeBSDíì¥ì´ë¤. ê²½ë¡ëªì ì´ê¸° 구ì±ì¸
              ì¬ë³¼ë¦ ë§í¬ë ê³ì ë°ë¥¼ê²ì´ë¤. glibc2.0.100ì í¤ëì íì ì´ íëê·¸ì
              ì ì를 í¬í¨íë¤; 커ë 2.1.126ì´ì ìì ì¬ì©íë¤ë©´ 무ìí  ê²ì´ë¤.

       O_DIRECTORY
              ê²½ë¡ëªì´ ëë í ë¦¬ê° ìëë¼ë©´, íì¼ì´ê¸°ë ì¤í¨í  ê²ì´ë¤. ì´ íëê·¸ë
              리ëì¤ì í¹ì§ì´ê³ , opendir(3)ê° FIFOë íìì¥ì¹ì í¸ì¶ëë¤ë©´ ìë¹ì¤ì
              ê±°ë¶ë¬¸ì 를 í¼í기 ìí´ ë¦¬ëì¤ ì»¤ë ë²ì  2.1.126ì ì¶ê°ëìë¤.
              ê·¸ë¬ë opendirë ì¸ë¶ìì ì¬ì©ë  ì ìë¤.

       O_LARGEFILE
              ëì©ë íì¼ ìì¤íì ì§ìíë 32ë¹í¸ ìì¤íì 31ë¹í¸ë¡ë ì´ì ìë í¬ê¸°ì íì¼ì
              ì¬ì©í  ì ìë¤.  리ëì¤ ì»¤ëì ì´ê²ì ìì§ì ì§ìíì§ ëª»íì§ë§, glibc
              2.1ìì íì¤íëìë¤.

       ëªëª ì´ë¬í ìµì íëê·¸ë íì¼ì´ ì´ë¦°í ì¬ì©íë fcntl ê° ë°ë ì ìë¤.

       모ë ë ìë¡ì´ íì¼ì´ ìì±ëë©´ ì¬ì©ê¶íì ì§ì íë¤. ëê° íë¡ì¸ì¤ì umask ë¡
       ìì íë¤: ìì±ë íì¼ì ê¶íì (mode & ~umask) ì´ë¤.

       ë¤ìì ì¬ë³¼ë¦ ììë 모ë 를 ìí´ ì ê³µëë¤:

       S_IRWXU
              00700 ì¬ì©ì(íì¼ ìì ì)ë ì½ê¸°, ì°ê¸°, ì¤íê¶íì´ ìë¤.

       S_IRUSR (S_IREAD)
              00400 ì¬ì©ìë ì½ê¸° ê¶íì´ ìë¤.

       S_IWUSR (S_IWRITE)
              00200 ì¬ì©ìë ì°ê¸° ê¶íì´ ìë¤.

       S_IXUSR (S_IEXEC)
              00100 ì¬ì©ìë ì¤í ê¶íì´ ìë¤.

       S_IRWXG
              00070 그룹ì ì½ê¸°, ì°ê¸°, ì¤í ê¶íì´ ìë¤.

       S_IRGRP
              00040 그룹ì ì½ê¸° ê¶íì´ ìë¤.

       S_IWGRP
              00020 그룹ì ì°ê¸° ê¶íì´ ìë¤.

       S_IXGRP
              00010 그룹ì ì¤í ê¶íì´ ìë¤.

       S_IRWXO
              00007 기íì¬ì©ìë ì½ê¸°, ì°ê¸°, ì¤í ê¶íì´ ìë¤.

       S_IROTH
              00004 기íì¬ì©ìë ì½ê¸° ê¶íì´ ìë¤.

       S_IWOTH
              00002 기íì¬ì©ìë ì°ê¸° ê¶íì´ ìë¤.

       S_IXOTH
              00001 기íì¬ì©ìë ì¤í ê¶íì´ ìë¤.  모ë ë íì O_CREAT ê° íëê·¸ ì¼ë
              ì§ì ëì´ì¼ë§íê³ , ê·¸ë°ìë 무ìíë¤.

              ìì± ì O_CREAT|O_WRONLY|O_TRUNC ì ì¼ì¹íë íëê·¸ 를 ê°ì§ íì¼ì´ê¸°
              ì ì¼ì¹íë¤.

ë°íê°
       ì´ê¸°ììì± ì ìë¬ê° ëë©´ ìë¡ì´ íì¼ ëì¤í¬ë¦½í°ë¥¼ ë°ííê±°ë -1ì ë°ííë¤.
       ì´ë°ê²½ì° errno ë ì ì í ì¤ì ëë¤.  Note that ì´ê¸° ë ì¥ì¹íì¼ì ì´ì ìì§ë§,
       ìì± ì ì¥ì¹íì¼ì ìì± í  ì ìë ê²ì 주ì§íë¤. ëì  mknod(2) ì ì¬ì©íë¤.

       UID 맵íì´ ê°ë¥í NFS íì¼ ìì¤íìì ì´ê¸°ë íì¼ ëì¤í¬ë¦½í°ë¥¼ ë°ííì§ë§,
       read(2)ë ê±°ë¶ëë¤. ì´ê²ì í´ë¼ì´ì¸í¸ê° ê¶íê²ì¬ì ìí´ ì´ê¸°ë¥¼ ì¤ííì§ë§
       UID 맵íì ìë²ì ìí´ ì¤íí  ì ì기 ë문ì´ë¤.



ìë¬
       EEXIST ê²½ë¡ëª ì´ ì´ë¯¸ ì¡´ì¬íê³ , O_CREAT and O_EXCL ê° ì¬ì©ëë¤.

       EISDIR ê²½ë¡ëª ì´ ëë í 리를 참조íê³ , ì ê·¼ì ë³µì¡í 기ë¡ì ì구íë¤.

       EACCES ìì²í íì¼ ì ê·¼ì ê±°ë¶ëê±°ë ê²½ë¡ëª ì ëë í ë¦¬ì¤ íëê° ì¤íê¶íì
              ì°¾ì ì ìê±°ë íì¼ì´ ìì§ ì¡´ì¬íì§ ìê³  ë¶ëª¨ëë í 리 ì ê·¼ì´ ê±°
              ë¶ëë¤.

       ENAMETOOLONG
              ê²½ë¡ëªì´ë무길ë¤.

       ENOENT A directory component in ê²½ë¡ëª ì ëë í ë¦¬ê° ìê±°ë ì¬ë³¼ë¦
              ë§í¬ê° 깨ì¡ë¤.

       ENOTDIR
              A component used as a directory in ê²½ë¡ëª ì ëë í 리ë¡ì¨ ì¬ì©ëë
              ê²ì´ ìë¤. ì¬ì¤ ëë í 리ë O_DIRECTORYê° ì§ì ëìê³  ê²½ë¡ëª ì´
              ëë í ë¦¬ê° ìëë¤.

       ENXIO  O_NONBLOCK | O_WRONLYê° ì¤ì ëê³ , ì§ì í íì¼ì´ FIFOì´ê³  ì´ë í
              íë¡ì¸ì¤ë ì½ê¸°ìí´ ì´ë¦° íì¼ì´ ìë¤.  ëë, íì¼ì´ ì¥ì¹íì¼ì´ê³
              ì¼ì¹íë ì¥ì¹ê° ìë¤.

       ENODEV ê²½ë¡ëª ì´ ì¥ì¹íì¼ì 참조íê³ , ì¼ì¹íë ì¥ì¹ê° ìë¤.

       EROFS  ê²½ë¡ëª ì´ read-only íì¼ìì¤íì íì¼ì 참조íê³  ì°ê¸°ì ê·¼ì´ ìì²‐
              ëë¤.

       ETXTBSY
              ê²½ë¡ëª ì´ íì¬ ì¤íì¤ì¸ ì¤íì´ë¯¸ì§íì¼ì 참조íê³  ì°ê¸°ê¶í
              ì ê·¼ì´ ìì²ëìë¤.

       EFAULT ê²½ë¡ëªì´ë¹ì ì´ì ê·¼í ììë주ìê³µê°ë°ìê°ë¦¬í¨ë¤.

       ELOOP  ì¬ë³¼ë¦ë§í¬ê° ë무 ë§ë¤.  ê²½ë¡ëª ì´ë O_NOFOLLOWê° ì§ì ëìì§ë§
              ê²½ë¡ëª ì´ ì¬ë³¼ë¦ ë§í¬ì´ë¤.

       ENOSPC ê²½ë¡ëª ì´ ìì±ëìì§ë§ ì¥ì¹ê° ê²½ë¡ëª ì´ í¬í¨íë ì¥ì¹ê° ìë¡ì´ íì¼ì
              ìí ê³µê°ì´ ìë¤.

       ENOMEM 커ë ë©ëª¨ë¦¬ê° ë¶ì¡±íë¤.

       EMFILE íë¡ì¸ì¤ê° ì´ë¯¸ íì¼ì´ê¸°ì ìµëê°ì ì°¼ë¤.

       ENFILE íì¼ì´ê¸°ì ì´í©ì íì ëë¬íë¤.

í¸í
       SVr4, SVID, POSIX, X/OPEN, BSD 4.3

ì í
       POSIXì O_SYNC, O_DSYNC ì O_RSYNCì ì¼ì¹íë ìì¶ë ¥ ë기íì ì¸ê°ì§ ë¤ë¥¸
       ë³ì를 ì ê³µíë¤.  íì¬(2.1.130) ì´ë°ê²ë¤ì 리ëì¤ìì 모ë ê°ì ë»ì´ë¤.

ê´ë ¨ í목
       read(2), write(2), fcntl(2), close(2), link(2), mknod(2), mount(2),
       stat(2), umask(2), unlink(2), socket(2), fopen(3), fifo(4)

ìì
       ASPLINUX<man@asp-linux.co.kr>, 2000ë 7ì 29



Linux                            June 3, 1999                          OPEN(2)