inblog logo
|
DailyCoding
    Linux

    6. 파일 디스크립터(File Descriptor)

    박은서's avatar
    박은서
    Apr 27, 2026
    6. 파일 디스크립터(File Descriptor)
    Contents
    1. 파일 디스크립터(File Descriptor)1️⃣ 파일 디스크립터란?2️⃣ 파일 디스크립터의 필요성3️⃣ 비유로 이해하기4️⃣ 기본 구조5️⃣ 대표적인 기본 FD6️⃣ 주요 동작7️⃣ 특징8️⃣ 왜 중요한가?9️⃣ 한방 정리

    1. 파일 디스크립터(File Descriptor)

    1️⃣ 파일 디스크립터란?

    1) 개념

    • 운영체제가 파일을 관리하기 위해 사용하는 번호(식별자)
    • 파일의 “번호표”

    2) 핵심 한 줄

    • “프로그램이 파일을 직접 다루는 게 아니라, 번호로 간접 접근한다”

    2️⃣ 파일 디스크립터의 필요성

    1) 문제 상황

    • 프로그램이 파일을 직접 관리하면 복잡함
    • 파일 종류도 다양함 (텍스트, 이미지, 네트워크 등)

    2) 해결 방법

    • OS가 대신 관리하고 프로그램에는 번호만 줌
    ➡️ 그래서 프로그램은 “파일”이 아니라 “번호”로 작업함

    3️⃣ 비유로 이해하기

    1) 카페 진동벨

    • 주문하면 → 진동벨 받음
    • 음식 나오면 → 번호로 찾음
    ⬇️
    • 음식 = 파일
    • 진동벨 번호 = 파일 디스크립터
    “파일 대신 번호로 관리하는 시스템”

    4️⃣ 기본 구조

    1) 흐름

    1. 프로그램이 파일 열기 요청 (open)
    1. OS가 파일을 열고 번호 부여
    1. 프로그램은 그 번호로 읽기/쓰기
    파일 → OS → 번호(fd) → 프로그램

    5️⃣ 대표적인 기본 FD

    1) 자동으로 존재하는 3개

    번호
    이름
    의미
    0
    stdin
    입력 (키보드)
    1
    stdout
    출력 (화면)
    2
    stderr
    에러 출력
    • 예시
      • echo hello
        ➡️ stdout(1)으로 출력됨

    6️⃣ 주요 동작

    1) 파일 열기

    int fd = open("test.txt", O_RDONLY);
    • fd라는 번호 받음

    2) 읽기

    read(fd, buffer, size);

    3) 쓰기

    write(fd, buffer, size);

    4) 닫기

    close(fd);
    핵심 : 모든 작업은 fd 기준으로 진행됨

    7️⃣ 특징

    1) 정수(int) 값이다

    • 0, 1, 2, 3, 4…

    2) 프로세스마다 따로 관리

    • 같은 파일이어도 fd는 다름

    3) 파일뿐 아니라 다양한 것 포함

    • 파일
    • 소켓 (네트워크)
    • 파이프
    ➡️ “입출력 대상은 전부 fd로 통일”

    8️⃣ 왜 중요한가?

    1) 리눅스/유닉스 핵심 개념

    • 모든 입출력 = 파일처럼 처리

    2) 서버 개발에서 필수

    • 네트워크 소켓도 fd로 처리됨

    3) 리다이렉션 가능

    ls > out.txt
    → stdout(1)을 파일로 변경

    9️⃣ 한방 정리

    • 파일 디스크립터 = 파일을 대신하는 번호
    • OS가 파일 관리 → 프로그램은 번호로 접근
    • 입력/출력/네트워크 전부 동일한 방식
    Share article
    Contents
    1. 파일 디스크립터(File Descriptor)1️⃣ 파일 디스크립터란?2️⃣ 파일 디스크립터의 필요성3️⃣ 비유로 이해하기4️⃣ 기본 구조5️⃣ 대표적인 기본 FD6️⃣ 주요 동작7️⃣ 특징8️⃣ 왜 중요한가?9️⃣ 한방 정리

    DailyCoding

    RSS·Powered by Inblog