https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=bestheroz&logNo=113881732 

 

[ C ]ํŒŒ์ผ ์—ด๊ธฐ - open

#include<sys/types.h> #include<sys/stat.h> #include<fcntl.h>   int open(const...

blog.naver.com

#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
 
int open(const char *path, int oflag [, mode ]);
path: ์—ด๋ ค๋Š” ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ๋กœ
oflag: ํŒŒ์ผ ์ƒํƒœ ํ”Œ๋ž˜๊ทธ
mode: ์ ‘๊ทผ ๊ถŒํ•œ

 

 

์ฃผ์š” oflag

์ข…๋ฅ˜ ๊ธฐ๋Šฅ
O_RDONLY ํŒŒ์ผ์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ฐ๋‹ค.
O_WRONLY ํŒŒ์ผ์„ ์“ฐ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ฐ๋‹ค.
O_RDWR ํŒŒ์ผ์„ ์ฝ๊ธฐ/์“ฐ๊ธฐ์šฉ์œผ๋กœ ์—ฐ๋‹ค.
O_CREAT ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒ์„ฑํ•œ๋‹ค. ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๊ถŒํ•œ์€ ๋‹น์—ฐํžˆ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ํŒŒ์ผ์ด ์ด๋ฏธ ์žˆ๋‹ค๋ฉด ์•„๋ฌด ์˜๋ฏธ ์—†๋Š” ์˜ต์…˜์ด๋‹ค.
O_EXCL O_CREAT ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ๊ธฐ์กด์— ์—†๋Š” ํŒŒ์ผ์ด๋ฉด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€๋งŒ, ์ด๋ฏธ ์žˆ์œผ๋ฉด ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
O_APPEND ์ด ์˜ต์…˜์„ ์ง€์ •ํ•˜๋ฉด ํŒŒ์ผ์˜ ๋งจ ๋์— ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.
O_TRUNC ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ ์ด๋ฏธ ์žˆ๋Š” ํŒŒ์ผ์ด๊ณ , ์“ฐ๊ธฐ ์˜ต์…˜์œผ๋กœ ์—ด์—ˆ์œผ๋ฉด ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ง€์šฐ๊ณ  ํŒŒ์ผ์˜ ๊ธธ์ด๋ฅผ 0์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.
O_NONBLOCK/O_NDELAY ๋น„๋ธ”๋กœํ‚น(non-blocking) ์ž…์ถœ๋ ฅ ์˜ต์…˜์œผ๋กœ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ณ  ๋‚œ ํ›„์˜ ๋™์ž‘์— ์˜ํ–ฅ์„ ์ค€๋‹ค. ๋””์Šคํฌ์˜ ํŒŒ์ผ ์ž…์ถœ๋ ฅ๋ณด๋‹ค๋Š” FIFO ๊ฐ™์€ ํŠน์ˆ˜ ํŒŒ์ผ์˜ ์ž…์ถœ๋ ฅ์— ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค. ๋””์Šคํฌ์ธ ๊ฒฝ์šฐ ์ฝ๊ฑฐ๋‚˜ ์“ธ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด -1์„ ๋ฆฌํ„ดํ•œ๋‹ค.
O_SYNC/O_DSYNC ํŒŒ์ผ์— ์“ฐ๊ธฐ ๋™์ž‘์„ ํ•  ๋•Œ ๋ณดํ†ต ๋ฒ„ํผ์—๋งŒ ์“ฐ๊ณ  ๋‚˜์ค‘์— ๋””์Šคํฌ์™€ ๊ฐ™์€ ์ €์žฅ ์žฅ์น˜๋กœ ์˜ฎ๊ฒจ์“ฐ๋Š”๋ฐ, ์ด ์˜ต์…˜์ด ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ์ €์žฅ ์žฅ์น˜์— ์“ฐ๊ธฐ๋ฅผ ๋งˆ์ณ์•ผ ์“ฐ๊ธฐ ๋™์ž‘์„ ์™„๋ฃŒํ•œ๋‹ค. O_SYNC ํ”Œ๋ž˜๊ทธ๋Š” ํŒŒ์ผ์˜ ์ˆ˜์ • ์‹œ๊ฐ ์†์„ฑ๋„ ์ˆ˜์ •ํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ์ด ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์†๋„๋Š” ๋А๋ ค์งˆ ์ˆ˜ ์žˆ์ง€๋งŒ ๋””์Šคํฌ์— ํ™•์‹คํ•˜๊ฒŒ ์ €์žฅ๋จ์„ ๋ณด์žฅํ•œ๋‹ค.

ํ”Œ๋ž˜๊ทธ๋ฅผ OR(|) ์—ฐ์‚ฐ์ž๋กœ ์—ฐ๊ฒฐํ•ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŒŒ์ผ์˜ ์šฉ๋„์— ๋”ฐ๋ผ ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋œ๋‹ค.

 

์“ฐ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด ๋•Œ, ์ด๋ฏธ ํŒŒ์ผ์ด ์žˆ๋Š” ๊ฒฝ์šฐ O_WRONLY | O_TRUNC
์“ฐ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด ๋•Œ, ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ O_WRONLY | O_CREAT | O_TRUNC
์ฝ๊ธฐ/์“ฐ๊ธฐ/์ถ”๊ฐ€์šฉ์œผ๋กœ ์—ด ๋•Œ O_RDWR | O_APPEND

 

mode๋Š” ํŒŒ์ผ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์œผ๋กœ, O_CREAT ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•ด ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. mode๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒ์ผ ๊ถŒํ•œ์„ ์„ค์ •ํ•˜๋“ฏ์ด 0644์™€ ๊ฐ™์ด ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋„ ์žˆ์ง€๋งŒ, <sys/stat.h> ํŒŒ์ผ์— ์ •์˜๋œ ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

 

#include<stdio.h>
#include<fcntl.h>
 
int main(void)
{
    int fd;
 
    fd=open("unix.txt", O_CREAT, 755);
    if(fd==-1)
    {
        perror("Creat");
        exit(1);
    }
    close(fd);
    return 0;
}
๋ฐ˜์‘ํ˜•

+ Recent posts