|
|
OPEN
Section: System calls (2) Updated: June 3, 1999 Index
Return to Main Contents
̾Á°
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
¥·¥¹¥Æ¥à¥³¡¼¥ë¤Ï¥Õ¥¡¥¤¥ë̾¤«¤é¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼ (³¤¯
read, write
¤Ê¤É I/O ¤Ç»ÈÍѤ¹¤ë¾®¤µ¤ÊÈóÉé¤ÎÀ°¿ô) ¤Ø¤ÎÊÑ´¹¤Ë»ÈÍѤ¹¤ë¡£
¸Æ¤Ó½Ð¤·¤¬À®¸ù¤·¤¿¾ì¹ç¡¢¸½ºß¤½¤Î¥×¥í¥»¥¹¤Ë¤è¤Ã¤Æ¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤
¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤Î¤¦¤ÁºÇ¾®¤Î¤â¤Î¤òÊÖ¤¹¡£
¤³¤Î¥³¡¼¥ë¤Ï¾¤Î¥×¥í¥»¥¹¤È¶¦Í¤µ¤ì¤Æ¤¤¤Ê¤¤¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò
ºîÀ®¤¹¤ë¡£(¤·¤«¤·
fork(2)
¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»ÈÍѤ·¤Æ¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ò¶¦Í¤¹¤ë¤³¤È¤Ï¤Ç¤¤ë)
¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤Ï exec ´Ø¿ô¤ò¹Ô¤Ã¤¿¸å¤â open ¤µ¤ì¤¿
¤Þ¤Þ¤Ç¤¢¤ë
(fcntl(2)
¤ò»²¾È)¡£
¥Õ¥¡¥¤¥ë¡¦¥ª¥Õ¥»¥Ã¥È (file offset) ¤Ï¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤ËÀßÄꤵ¤ì¤ë¡£
¥Ñ¥é¥á¡¼¥¿
flags
¤Ï
O_RDONLY, O_WRONLY, O_RDWR
¤Î¤É¤ì¤«°ì¤Ä¤Ç¡¢¤½¤ì¤¾¤ìÆÉ¤ß¹þ¤ßÀìÍÑ¡¢½ñ¤¹þ¤ßÀìÍÑ¡¢ÆÉ¤ß½ñ¤ÍѤòÍ׵᤹¤ë¡£
flags
¤Ï¡¢°Ê²¼¤Î 0 ¸Ä°Ê¾å¤Î¥Ó¥Ã¥È OR (bitwise-or) ¤Ç¤â¤è¤¤¡£
- O_CREAT
-
¥Õ¥¡¥¤¥ë¤¬Â¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤ÏºîÀ® (create) ¤¹¤ë¡£
¥Õ¥¡¥¤¥ë¤Î½êÍ¼Ô (¥æ¡¼¥¶¡¼ ID) ¤Ï¡¢¥×¥í¥»¥¹¤Î¼Â¸ú¥æ¡¼¥¶¡¼ ID ¤ËÀßÄꤵ¤ì¤ë¡£
¥°¥ë¡¼¥×½ê͸¢ (¥°¥ë¡¼¥× ID) ¤Ï¡¢¥×¥í¥»¥¹¤Î¼Â¸ú¥°¥ë¡¼¥× ID
¤Þ¤¿¤Ï¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Î¥°¥ë¡¼¥× ID ¤ËÀßÄꤵ¤ì¤ë
(¤³¤ì¤Ï¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¥¿¥¤¥×¡¦¥Þ¥¦¥ó¥È¥ª¥×¥·¥ç¥ó¡¦
¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Î¥â¡¼¥É¤Ë°Í¸¤¹¤ë¡£
Î㤨¤Ð¡¢
mount(8)
¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë ext2 ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Þ¥¦¥ó¥È¥ª¥×¥·¥ç¥ó
bsdgroups
¤È
sysvgroups
¤ò¸«¤è)¡£
- O_EXCL
-
O_CREAT
¤È°ì½ï¤Ë»ÈÍѤµ¤ì¤¿¾ì¹ç¡¢
¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¤¿¾ì¹ç¤Ï¥¨¥é¡¼¤È¤Ê¤ê¡¢
open
¤Ï¼ºÇÔ¤¹¤ë¡£
¤³¤Î¾ì¹ç¡¢¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤¬¤É¤³¤ò»Ø¤·¤Æ¤¤¤ë¤«¤Ë¤«¤«¤ï¤é¤º¡¢
¤½¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ï¸ºß¤¹¤ë¡£
O_EXCL
¤Ï NFS ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ç¤Ïµ¡Ç½¤·¤Ê¤¤¡¢
¥í¥Ã¥¯ (lock) µ¡Ç½¤Ê¤É¤Ë»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ï¶¥¹ç¾õÂ֤ˤʤë¤À¤í¤¦¡£
¥í¥Ã¥¯¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤¿Ê¬²òÉÔǽ (atomic) ¤Î¥í¥Ã¥¯µ¡Ç½¤Î²ò·è¤Ë¤Ï
Ʊ¤¸¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ë¾¤È̾Á°¤Î½Å¤Ê¤é¤Ê¤¤¥Õ¥¡¥¤¥ë
(Î㤨¤Ð¥Û¥¹¥È̾¤È pid ¤ÎÁȤ߹ç¤ï¤») ¤òºîÀ®¤·¡¢
link(2)
¤ò»ÈÍѤ·¤Æ¥í¥Ã¥¯¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¡£
link() ¥³¡¼¥ë¤ÎÊÖ¤êÃͤ¬ 0 ¤Ê¤é¤Ð¥í¥Ã¥¯¤ËÀ®¸ù¤·¤Æ¤¤¤ë¡£
¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤Ë
stat(2)
¤ò»ÈÍѤ·¤Æ¥ê¥ó¥¯¿ô (link count) ¤¬ 2 ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤«¤ò¥Á¥§¥Ã¥¯¤¹¤ë¡£
¤³¤Î¾ì¹ç¤Ë¤Ï¥í¥Ã¥¯¤ËÀ®¸ù¤·¤Æ¤¤¤ë¡£
- O_NOCTTY
-
pathname
¤ÏüËö (terminal) ¥Ç¥Ð¥¤¥¹¤ò»²¾È¤·¤Æ¤¤¤Æ¡¢
---
tty(4)
¤ò»²¾È¤¹¤ë¤³¤È
---
¥×¥í¥»¥¹¤¬À©¸æÃ¼Ëö¤ò»ý¤¿¤Ê¤¤¾ì¹ç¤Ï¡¢¤½¤ì¤¬À©¸æÃ¼Ëö¤Ë¤Ê¤ë¡£
- O_TRUNC
-
¥Õ¥¡¥¤¥ë¤¬´û¤Ë¸ºß¤·¡¢Ä̾ï¥Õ¥¡¥¤¥ë¤Ç¤¢¤ê¡¢
½ñ¤¹þ¤ß²Ä¥â¡¼¥É¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë
(¤Ä¤Þ¤ê¡¢O_RDWR ¤Þ¤¿¤Ï O_WRONLY ¤Î) ¾ì¹ç¡¢
Ťµ 0 ¤ËÀÚ¤êµÍ¤á (truncate) ¤é¤ì¤ë¡£
¥Õ¥¡¥¤¥ë¤¬ FIFO ¤Þ¤¿¤ÏüËö¥Ç¥Ð¥¤¥¹¥Õ¥¡¥¤¥ë¤Î¾ì¹ç¡¢
O_TRUNC ¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë¡£
¤½¤ì°Ê³°¤Î¾ì¹ç¡¢O_TRUNC ¤Î¸ú²Ì¤Ï»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤
(Linux ¥Ð¡¼¥¸¥ç¥ó¤Î¿¤¯¤Ç¤Ï¡¢¤³¤Î¥Õ¥é¥°¤Ï̵»ë¤µ¤ì¤ë¡£
¤½¤ì°Ê³°¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¥¨¥é¡¼¤òÊÖ¤¹)¡£
- O_APPEND
-
¥Õ¥¡¥¤¥ë¤òÄɲà (append) ¥â¡¼¥É¤Ç¥ª¡¼¥×¥ó¤¹¤ë¡£¤½¤ì¤¾¤ì¤Î
write
¤ÎÁ°¤Ë
lseek
¤ò¹Ô¤Ã¤¿¤«¤Î¤è¤¦¤Ë¡¢¥Õ¥¡¥¤¥ë¡¦¥Ý¥¤¥ó¥¿¡¼¤ò¥Õ¥¡¥¤¥ë¤ÎºÇ¸å¤Ë°Üư¤¹¤ë¡£
NFS ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
O_APPEND
¤ÇÊ£¿ô¤Î¥×¥í¥»¥¹¤¬Æ±¤¸¥Õ¥¡¥¤¥ë¤ËƱ»þ¤Ë
½ñ¤¹þ¤â¤¦¤È¤·¤¿¾ì¹ç¡¢ÆâÍÆ¤¬Ç˲õ¤µ¤ì¤ë¡£¤³¤ì¤Ï NFS ¤¬Äɲå⡼¥É¤ò
¥µ¥Ý¡¼¥È¤»¤º¡¢¥¯¥é¥¤¥¢¥ó¥È¤Î¥«¡¼¥Í¥ë (kernel) ¤¬¤½¤ì¤ò¥·¥ß¥å¥ì¡¼¥È
¤·¤Æ¤¤¤ë¤Î¤Ç¡¢¶¥¹ç¾õÂ֤ǤϻÈÍѤǤ¤Ê¤¤¤¿¤á¤Ç¤¢¤ë¡£
- O_NONBLOCK ¤Þ¤¿¤Ï O_NDELAY
-
²Äǽ¤Ê¤é¤Ð¡¢¥Õ¥¡¥¤¥ë¤ÏÈóÄä»ß (non-blocking) ¥â¡¼¥É¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤ë¡£
open
¤ä¾¤Î¡¢¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤ËÂФ¹¤ë¤¹¤Ù¤Æ¤ÎÁàºî¤â
¸Æ¤Ó½Ð¤·¤¿¥×¥í¥»¥¹¤òÂÔ¤¿¤»¤ë¤³¤È¤Ê¤¯ÊÖ¤µ¤ì¤ë¡£
FIFO (¥Í¡¼¥à¥É¡¦¥Ñ¥¤¥×) ¤ò°·¤¦¾ì¹ç¤Ë¤Ï
fifo(4)
¤â»²¾È¤¹¤ë¤³¤È¡£
¤³¤Î¥â¡¼¥É¤Ï FIFO °Ê³°¤Î¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¸ú²Ì¤ò»ý¤ÄɬÍפϤʤ¤¡£
- O_SYNC
-
¥Õ¥¡¥¤¥ë¤ÏƱ´ü (synchronous) I/O ¥â¡¼¥É¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤ë¡£
¤½¤Î¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤ËÂФ¹¤ëÁ´¤Æ¤Î
write
¤Ï¡¢Âбþ¤¹¤ë¥Ï¡¼¥É¥¦¥§¥¢¤ËʪÍýŪ¤Ë½ñ¤¹þ¤Þ¤ì¤ë¤Þ¤Ç¸Æ¤Ó½Ð¤·¤¿
¥×¥í¥»¥¹¤ËÌá¤é¤Ê¤¤¡£
°Ê²¼¤Î¡ÖÀ©¸Â¡×¤ò¸«¤è¡£
- O_NOFOLLOW
-
pathname ¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯¤À¤Ã¤¿¾ì¹ç¡¢¥ª¡¼¥×¥ó¤Ï¼ºÇÔ¤¹¤ë¡£
¤³¤ì¤Ï FreeBSD ¤Î³ÈÄ¥¤Ç¡¢Linux ¤Ë¤Ï 2.1.126 ¤è¤êÄɲ䵤줿¡£
pathname ¤ÎÁ°¤ÎÀ®Ê¬¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤Ï°ÍÁ³¤È¤·¤ÆÄÉÀפµ¤ì¤ë¡£
glibc 2.0.100 °Ê¹ß¤Î¥Ø¥Ã¥À¡¼¤Ë¤Ï¤³¤Î¥Õ¥é¥°¤ÎÄêµÁ¤¬¤¢¤ë¡£
2.1.126 °ÊÁ°¤Î¥«¡¼¥Í¥ë¤Ç»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ï̵»ë¤µ¤ì¤ë¡£
- O_DIRECTORY
-
pathname ¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤±¤ì¤Ð¥ª¡¼¥×¥ó¤Ï¼ºÇÔ¤¹¤ë¡£
¤³¤Î¥Õ¥é¥°¤Ï Linux ÆÃͤǤ¢¤ë¡£
opendir(3) ¤¬ FIFO ¤ä¥Æ¡¼¥×¥Ç¥Ð¥¤¥¹¤ËÂФ·¤Æ¥³¡¼¥ë¤µ¤ì¤¿¾ì¹ç¤Î
¥µ¡¼¥Ó¥¹ÉÔǽ (denial-of-service) ¹¶·â¤òÈò¤±¤ë¤¿¤á¤Ë
¥«¡¼¥Í¥ë 2.1.126 ¤ÇÄɲ䵤줿¡£
¤·¤«¤·¤³¤ì¤Ï opendir ¤Î¼ÂÁõ°Ê³°¤Ç¤Ï»ÈÍѤ¹¤ë¤Ù¤¤Ç¤Ï¤Ê¤¤¡£
- O_LARGEFILE
-
µðÂç¤Ê¥Õ¥¡¥¤¥ë (Large Files System) ¤ò¥µ¥Ý¡¼¥È¤·¤¿ 32 ¥Ó¥Ã¥È¥·¥¹¥Æ¥à¤Ç¡¢
31 ¥Ó¥Ã¥È¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î¥µ¥¤¥º¤òɽ¤ï¤»¤Ê¤¤¤è¤¦¤Ê¥Õ¥¡¥¤¥ë¤Î
¥ª¡¼¥×¥ó¤ò²Äǽ¤Ë¤¹¤ë¡£
¤³¤ì¤é¤ÎÁªÂò¥Õ¥é¥°¤Î¤¤¤¯¤Ä¤«¤Ï¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤·¤¿¸å¤Ç¤â
fcntl
¤ò»ÈÍѤ·¤ÆÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤¤ë¡£
°ú¤¿ô
mode
¤Ï¿·¤·¤¤¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¾ì¹ç¤Ë»ÈÍѤ¹¤ëµö²Ä (permission) ¤ò»ØÄꤹ¤ë¡£
¤½¤ì¤Ï¥×¥í¥»¥¹¤Î
umask
¤ÇÄ̾ïÄ̤꽤Àµ¤µ¤ì¡¢ºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Îµö²Ä¤Ï
(mode & ~umask)
¤È¤Ê¤ë¡£
¤³¤Î¥â¡¼¥É¤Ï¿·¤·¤¯ºîÀ®¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î
¾Íè¤Î¥¢¥¯¥»¥¹¤Ë¤Î¤ßŬÍѤµ¤ì¤ëÅÀ¤ËÃí°Õ¤¹¤ë¤³¤È¡£
ÆÉ¤ß¹þ¤ß¤Î¤ß¤Î¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë
open
¥³¡¼¥ë¤Ï¡¢read/write ¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤òÊÖ¤¹¡£
mode
¤Î¤¿¤á¤Ë°Ê²¼¤Î¥·¥ó¥Ü¥ëÄê¿ô¤¬Ä󶡤µ¤ì¤Æ¤¤¤ë :
- 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 ¾¿Í (others) ¤ÏÆÉ¤ß¹þ¤ß¡¢½ñ¤¹þ¤ß¡¢¼Â¹Ô¤Îµö²Ä¤ò»ý¤Ä¡£
- S_IROTH
-
00004 ¾¿Í¤ÏÆÉ¤ß¹þ¤ß¤Îµö²Ä¤ò»ý¤Ä¡£
- S_IWOTH
-
00002 ¾¿Í¤Ï½ñ¤¹þ¤ß¤Îµö²Ä¤ò»ý¤Ä¡£
- S_IXOTH
-
00001 ¾¿Í¤Ï¼Â¹Ô¤Îµö²Ä¤ò»ý¤Ä¡£
mode
¤Ï
flags
¤Ë
O_CREAT
¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ï¾ï¤Ë»ØÄꤹ¤ëɬÍפ¬¤¢¤ë¡£
¤½¤ì°Ê³°¤Î¾ì¹ç¤Ï̵»ë¤µ¤ì¤ë¡£
creat
¤Ï
flags
¤Ë
O_CREAT|O_WRONLY|O_TRUNC
¤ò»ØÄꤷ¤Æ
open
¤ò¹Ô¤Ê¤¦¤Î¤ÈÅù²Á¤Ç¤¢¤ë¡£
ÊÖ¤êÃÍ
open ¤È creat
¤Ï¿·¤·¤¤¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤òÊÖ¤¹¡£
¥¨¥é¡¼¤¬È¯À¸¤·¤¿¾ì¹ç¤Ï -1 ¤òÊÖ¤¹
(¤½¤Î¾ì¹ç¤Ï
errno
¤òŬÀÚ¤ËÀßÄꤹ¤ë)¡£
open
¤ÇÆÃ¼ì¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤Ï¤Ç¤¤ë¤¬¡¢
creat
¤ÇÆÃ¼ì¥Õ¥¡¥¤¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ï¤Ç¤¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£
- Âå¤ï¤ê¤Ë
mknod(2)
¤ò»ÈÍѤ¹¤ë¡£
UID ¥Þ¥Ã¥Ô¥ó¥°¤ò»ÈÍѤ·¤Æ¤¤¤ë NFS ¥Õ¥¡¥¤¥ë¡¦¥·¥¹¥Æ¥à¤Ç¤Ï¡¢
open ¤¬¥Õ¥¡¥¤¥ë¡¦¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¼¤òÊÖ¤·¤¿¾ì¹ç¤Ç¤â
read(2) ¤¬ EACCES ¤ÇµñÈݤµ¤ì¤ë¾ì¹ç¤¬¤¢¤ë¡£
¤³¤ì¤Ï open ¤Îµö²Ä¤Î¥Á¥§¥Ã¥¯¤Ï¥¯¥é¥¤¥¢¥ó¥È¤Ç¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¤¬¡¢
ÆÉ¤ß¹þ¤ß¡¢½ñ¤¹þ¤ß¤ÎºÝ¤Î UID ¥Þ¥Ã¥Ô¥ó¥°¤Ï¥µ¡¼¥Ð¡¼¤Ç¹Ô¤Ê¤ï¤ì¤Æ¤¤¤ë¤¿¤á¤Ç¤¢¤ë¡£
¥Õ¥¡¥¤¥ë¤¬¿·¤·¤¯ºîÀ®¤µ¤ì¤ë¤È¡¢
¥Õ¥¡¥¤¥ë¤Î atime, ctime, mtime ¥Õ¥£¡¼¥ë¥É¤¬¸½ºß»þ¹ï¤ËÀßÄꤵ¤ì¤ë¡£
¤µ¤é¤Ë¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Î ctime ¤È mtime ¤â¸½ºß»þ¹ï¤ËÀßÄꤵ¤ì¤ë¡£
¤½¤ì°Ê³°¤Î¾ì¹ç¤Ç¡¢O_TRUNC ¥Õ¥é¥°¤Ç¥Õ¥¡¥¤¥ë¤¬½¤Àµ¤µ¤ì¤¿¤È¤¤Ï¡¢
¥Õ¥¡¥¤¥ë¤Î ctime ¤È mtime ¥Õ¥£¡¼¥ë¥É¤¬¸½ºß»þ¹ï¤ËÀßÄꤵ¤ì¤ë¡£
¥¨¥é¡¼
- EEXIST
-
pathname
¤Ï´û¤Ë¸ºß¤·¡¢
O_CREAT ¤È O_EXCL
¤¬»ÈÍѤµ¤ì¤¿¡£
- EISDIR
-
pathname
¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤ò»²¾È¤·¤Æ¤ª¤ê¡¢½ñ¤¹þ¤ßÍ׵᤬´Þ¤Þ¤ì¤Æ¤¤¤¿¡£
- EACCES
-
¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ëÍ׵ᤵ¤ì¤¿¥¢¥¯¥»¥¹¤¬µö¤µ¤ì¤Æ¤¤¤Ê¤¤¤«¡¢
pathname
¤Î¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤Î¤É¤ì¤«¤Ë¸¡º÷ (¼Â¹Ô) µö²Ä¤¬¤Ê¤«¤Ã¤¿¡£
¤Þ¤¿¤Ï¥Õ¥¡¥¤¥ë¤¬¤Þ¤À¸ºß¤»¤º¡¢¿Æ¥Ç¥£¥ì¥¯¥È¥ê¤Ø¤Î½ñ¤¹þ¤ßµö²Ä¤¬¤Ê¤«¤Ã¤¿¡£
- ENAMETOOLONG
-
pathname ¤¬Ä¹²á¤®¤ë¡£
- ENOENT
-
pathname
¤Î¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤¬Â¸ºß¤·¤Ê¤¤¤«²õ¤ì¤¿ (dangling) ¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯¤Ç¤¢¤ë¡£
- ENOTDIR
-
pathname
¤Ë´Þ¤Þ¤ì¤ë¥Ç¥£¥ì¥¯¥È¥êÉôʬ¤Î¤É¤ì¤«¤¬¼ÂºÝ¤Ë¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¤¡£
¤Þ¤¿¤Ï O_DIRECTORY ¤¬»ØÄꤵ¤ì¤Æ¤ª¤ê¡¢
pathname
¤¬¥Ç¥£¥ì¥¯¥È¥ê¤Ç¤Ê¤¤¡£
- ENXIO
-
O_NONBLOCK | O_WRONLY ¤¬ÀßÄꤵ¤ì¤Æ¤ª¤ê¡¢»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤¬ FIFO ¤Ç
¤½¤Î¥Õ¥¡¥¤¥ë¤òÆÉ¤ß¹þ¤ß¤Î¤¿¤á¤Ë¥ª¡¼¥×¥ó¤·¤Æ¤¤¤ë¥×¥í¥»¥¹¤¬Â¸ºß¤·¤Ê¤¤¡£
¤Þ¤¿¤Ï¡¢¥Õ¥¡¥¤¥ë¤¬¥Ç¥Ð¥¤¥¹ÆÃ¼ì¥Õ¥¡¥¤¥ë¤ÇÂбþ¤¹¤ë¥Ç¥Ð¥¤¥¹¤¬Â¸ºß¤·¤Ê¤¤¡£
- ENODEV
-
pathname
¤¬¥Ç¥Ð¥¤¥¹ÆÃ¼ì¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤ª¤ê¡¢Âбþ¤¹¤ë¥Ç¥Ð¥¤¥¹¤¬Â¸ºß¤·¤Ê¤¤¡£
(¤³¤ì¤Ï Linux ¥«¡¼¥Í¥ë¤Î¥Ð¥°¤Ç¤¢¤ê¡¢¤³¤Î¾ì¹ç¤Ë¤Ï ENXIO ¤¬ÊÖ¤µ¤ì¤ë¤Ù¤¤Ç¤¢¤ë)
- EROFS
-
pathname
¤¬ÆÉ¤ß¹þ¤ßÀìÍѤΥե¡¥¤¥ë¥·¥¹¥Æ¥à¾å¤Î¥Õ¥¡¥¤¥ë¤ò»²¾È¤·¤Æ¤ª¤ê¡¢
½ñ¤¹þ¤ß¥¢¥¯¥»¥¹¤òÍ׵ᤷ¤¿¡£
- ETXTBSY
-
pathname
¤¬¸½ºß¼Â¹ÔÃæ¤Î¼Â¹Ô¥¤¥á¡¼¥¸¤ò»²¾È¤·¤Æ¤ª¤ê¡¢½ñ¤¹þ¤ß¤òÍ׵ᤷ¤¿¡£
- EFAULT
-
pathname ¤¬¥¢¥¯¥»¥¹²Äǽ¤Ê¥¢¥É¥ì¥¹¶õ´Ö¤Î³°Éô¤ò»Ø¤·¤Æ¤¤¤¿.
- ELOOP
-
pathname
¤ò²ò·è¤¹¤ëºÝ¤ËÁø¶ø¤·¤¿¥·¥ó¥Ü¥ê¥Ã¥¯¡¦¥ê¥ó¥¯¤¬Â¿²á¤®¤ë¡£
¤Þ¤¿¤Ï O_NOFOLLOW ¤¬»ØÄꤵ¤ì¤Æ¤ª¤ê¡¢
pathname
¤¬¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤À¤Ã¤¿¡£
- ENOSPC
-
pathname
¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ë¤¬¡¢
pathname
¤ò´Þ¤ó¤Ç¤¤¤ë¥Ç¥Ð¥¤¥¹¤Ë¿·¤·¤¤¥Õ¥¡¥¤¥ë¤Î¤¿¤á¤Î¶õ¤ÍÆÎ̤¬¤Ê¤¤¡£
- ENOMEM
-
¥«¡¼¥Í¥ë¤Ë½½Ê¬¥á¥â¥ê¤¬Â¸ºß¤·¤Ê¤¤¡£
- EMFILE
-
¥×¥í¥»¥¹¤¬´û¤Ë¡¢¥ª¡¼¥×¥ó¤Ç¤¤ë¥Õ¥¡¥¤¥ë¤ÎºÇÂç¿ô¤Ë㤷¤Æ¤¤¤ë¡£
- ENFILE
-
¥·¥¹¥Æ¥àÁ´ÂΤǥª¡¼¥×¥ó¤Ç¤¤ë¥Õ¥¡¥¤¥ë¤Î¹ç·×¿ô¤ÎÀ©¸Â¤Ë㤷¤Æ¤¤¤ë¡£
½àµò
SVr4, SVID, POSIX, X/OPEN, BSD 4.3¡£
O_NOFOLLOW
¤È
O_DIRECTORY
¥Õ¥é¥°¤Ï Linux ÆÃͤΤâ¤Î¤Ç¤¢¤ë¡£
¤³¤ì¤é¤Î¥Õ¥é¥°¤ÎÄêµÁ¤ò»È¤¦¤Ë¤¿¤á¤Ë¤Ï¡¢
_GNU_SOURCE
¥Þ¥¯¥í¤òÄêµÁ¤¹¤ëɬÍפ¬¤¢¤ë¤«¤âÃΤì¤Ê¤¤¡£
À©¸Â
NFS ¤ò¼Â¸½¤·¤Æ¤¤¤ë¥×¥í¥È¥³¥ë¤Ë¤Ï¿¤¯¤ÎÉÔÈ÷¤¬¤¢¤ê¡¢ÆÃ¤Ë
O_SYNC ¤È O_NDELAY
¤Ë±Æ¶Á¤¹¤ë¡£
POSIX ¤Ç¤Ï¡¢¥Õ¥é¥° O_SYNC, O_DSYNC, O_RSYNC ¤ËÂбþ¤¹¤ë
3 ¼ïÎà¤ÎƱ´ü I/O ¤òÄ󶡤·¤Æ¤¤¤ë¡£
Linux ¤Ç¤Ï¡¢º£¤Î¤È¤³¤í (¥«¡¼¥Í¥ë 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)
Index
- ̾Á°
-
- ½ñ¼°
-
- ÀâÌÀ
-
- ÊÖ¤êÃÍ
-
- ¥¨¥é¡¼
-
- ½àµò
-
- À©¸Â
-
- ´ØÏ¢¹àÌÜ
-
|