[get_next_line][C] open ํ•จ์ˆ˜

2025. 6. 4. 00:59ยท๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus

open() ํ•จ์ˆ˜

ํŒŒ์ผ์„ ์—ฌ๋Š” ์‹œ์Šคํ…œ ํ˜ธ์ถœ ํ•จ์ˆ˜์ด๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์— ์ ‘๊ทผ(read, write ๋“ฑ)ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปค๋„์—๊ฒŒ ์š”์ฒญํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค.

 

ํ•จ์ˆ˜ ์›ํ˜•

#include <fcntl.h>

int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode); // ํŒŒ์ผ ์ƒ์„ฑ ์‹œ ๊ถŒํ•œ ํ•„์š”

 

๋ฐ˜ํ™˜๊ฐ’

  • ์„ฑ๊ณต: ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ (0 ์ด์ƒ์˜ ์ •์ˆ˜)
  • ์‹คํŒจ: -1 (์—๋Ÿฌ ๋ฐœ์ƒ)

์ด fd๋ฅผ ํ†ตํ•ด read(), write(), close() ๋“ฑ์— ์ „๋‹ฌํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ฃผ์š” flags ์˜ต์…˜๋“ค

์˜ต์…˜ ์„ค๋ช…
O_RDONLY ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด๊ธฐ
O_WRONLY ์“ฐ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด๊ธฐ
O_RDWR ์ฝ๊ธฐ + ์“ฐ๊ธฐ
O_CREAT ํŒŒ์ผ์ด ์—†์œผ๋ฉด ์ƒ์„ฑ
O_TRUNC ์—ด ๋•Œ ๊ธฐ์กด ํŒŒ์ผ ๋‚ด์šฉ ์‚ญ์ œ
O_APPEND ํŒŒ์ผ ๋์—๋งŒ ์“ฐ๋„๋ก ๊ฐ•์ œ
O_EXCL O_CREAT์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ์‹œ, ํŒŒ์ผ ์žˆ์œผ๋ฉด ์‹คํŒจ

 

O_CREAT๋ฅผ ์“ฐ๋ฉด ์„ธ ๋ฒˆ์งธ ์ธ์ž mode_t mode(ํŒŒ์ผ ๊ถŒํ•œ)๋„ ๋„ฃ์–ด์ค˜์•ผ ํ•œ๋‹ค.

 

์˜ˆ์‹œ

int fd;

fd = open("data.txt", O_RDONLY);
if (fd == -1)
    perror("open failed");
int fd = open("log.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644);
// ์“ฐ๊ธฐ ์ „์šฉ, ์—†์œผ๋ฉด ์ƒ์„ฑ, ์žˆ์œผ๋ฉด ๋‚ด์šฉ ์‚ญ์ œ, ๊ถŒํ•œ 644

 

fcntl.h

<fcntl.h>๋Š” ํŒŒ์ผ ์ œ์–ด ์˜ต์…˜(file control options)์„ ์ •์˜ํ•œ ํ—ค๋” ํŒŒ์ผ์ด๋‹ค.
์ฃผ๋กœ open() ํ•จ์ˆ˜๋‚˜ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ ๊ด€๋ จ ์ž‘์—…์„ ํ•  ๋•Œ ํ•„์š”ํ•˜๋‹ค.

 

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ํŒŒ์ผ ์—ด๊ธฐ(open) ์˜ต์…˜ ์ƒ์ˆ˜

์œ„์—์„œ ๋ดค๋˜ O_RDONLY, O_WRONLY, ...

 

  1. fcntl() ํ•จ์ˆ˜ ๊ด€๋ จ ์˜ต์…˜
  • fcntl()์€ ์—ด๋ ค์žˆ๋Š” ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ์˜ ์†์„ฑ์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.
  • ์˜ˆ: non-blocking ๋ชจ๋“œ ์„ค์ •, FD_CLOEXEC ์„ค์ • ๋“ฑ
int flags = fcntl(fd, F_GETFL);       // fd์˜ ํ˜„์žฌ ํ”Œ๋ž˜๊ทธ ์กฐํšŒ
fcntl(fd, F_SETFL, flags | O_NONBLOCK); // non-blocking ๋ชจ๋“œ ์„ค์ •

 

  1. ํŒŒ์ผ ์ž ๊ธˆ(locking) ๊ด€๋ จ ๊ตฌ์กฐ์ฒด ๋ฐ ๋งคํฌ๋กœ
F_SETLK, F_GETLK, F_SETLKW  // ํŒŒ์ผ ์ž ๊ธˆ/ํ•ด์ œ ๋ช…๋ น์–ด
struct flock                // ํŒŒ์ผ ์ž ๊ธˆ ์ •๋ณด๋ฅผ ๋‹ด๋Š” ๊ตฌ์กฐ์ฒด

unistd.h vs fcntl.h

  • <unistd.h>: read(), write(), close(), lseek() ๋“ฑ ์‹œ์Šคํ…œ ์ฝœ ํ•จ์ˆ˜
  • <fcntl.h>: open()์šฉ ์˜ต์…˜, fcntl() ๊ธฐ๋Šฅ ๋“ฑ ์ œ์–ด ๊ด€๋ จ ์ƒ์ˆ˜์™€ ์ •์˜

'๐Ÿƒโ€โ™€๏ธ Activities > 42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[get_next_line][C] read & write ํ•จ์ˆ˜  (0) 2025.06.04
[get_next_line][C] static ํ•จ์ˆ˜ & ๋ณ€์ˆ˜  (0) 2025.06.04
[get_next_line][C] ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(File Descriptor)  (0) 2025.06.02
[ft_printf][C] printf ํฌ๋งท ์ถœ๋ ฅ ์˜ˆ์‹œ (%p, %u, %x, %X)  (0) 2025.06.02
[ft_printf][C] ๊ฐ€๋ณ€ ์ธ์ž ํ•จ์ˆ˜  (0) 2025.06.02
'๐Ÿƒ‍โ™€๏ธ Activities/42 Cursus' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [get_next_line][C] read & write ํ•จ์ˆ˜
  • [get_next_line][C] static ํ•จ์ˆ˜ & ๋ณ€์ˆ˜
  • [get_next_line][C] ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ(File Descriptor)
  • [ft_printf][C] printf ํฌ๋งท ์ถœ๋ ฅ ์˜ˆ์‹œ (%p, %u, %x, %X)
0=2.
0=2.
  • 0=2.
    0=2
    0=2.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (65)
      • ๐Ÿ“‚ Project (2)
        • Paint the City (2)
      • ๐Ÿ’ญ Problem Solving (28)
        • C++ (28)
      • ๐Ÿ“ Study (1)
        • React (1)
      • ๐Ÿ’ป CS (2)
        • ๐Ÿ“˜ Dev Book (2)
      • ๐Ÿƒ‍โ™€๏ธ Activities (32)
        • Web Front-End Basic Study (6)
        • 42 Cursus (26)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
    • ๊ธ€์“ฐ๊ธฐ
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ์ •๋ ฌ
    swea
    C
    makefile
    ๋ฐฑ์ค€
    react
    knapsack
    La Piscine
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    HTML
    CS
    ๋ธŒ๋ฃจํŠธํฌ์Šค
    42๊ฒฝ์‚ฐ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    VR
    .h
    ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜
    git
    ๊ตฌํ˜„
    ๋งต
    unity
    CSS
    dfs
    BFS
    dynamic programming
    github
    ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    JavaScript
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
0=2.
[get_next_line][C] open ํ•จ์ˆ˜
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”