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; } |
๋ฐ์ํ
'Backgrounds > Operating System' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ณต๋ฃก์ฑ | Chapter 3. Processes 2. (0) | 2022.12.02 |
---|---|
Linux - PID, PPID, PGID, SID๋? (0) | 2022.11.19 |
Linux ํฐ๋ฏธ๋ ๋ช ๋ น์ด ๋ชจ์ (0) | 2022.11.16 |
๋ฉ๋ชจ๋ฆฌ ์์ญ(Code, Data, Heap, Stack) (0) | 2022.11.16 |