[시스템프로그래밍] pipe에 관하여

2023. 11. 2. 15:24·Study/시스템프로그래밍

pipe()를 호출하면 파이프를 만들고 두 개의 file descriptor table을 생성한다.

→ 읽기용 descriptor table(fd[0])과 쓰기용 descriptor table(fd[1]) 생성

 

 

부모와 자식이 pipe로 소통을 한다.

  1. 부모가 pipe 호출
  2. 파일 디스크립터 테이블 2개 생성
  3. 커널 안에 파이프 객체 생성
  4. fd[1]을 가지고 작성, fd[0]으로 읽음
  5. fork를 해서 자식 프로세스 생성
  6. 자식 프로세스는 대부분의 정보를 복사한다.→ 파일 디스크립터 내용 또한 복사됨
  7. 같은 파이프에 쓰고 읽을 수 있다.
  8. read한 데이터는 파이프에 저장되지 않고, 없어진다.

 

 

파이프 안에 read할 데이터가 있는데 read한 경우

→ 그냥 read가 됨

 

 

파이프 안이 비어있는데 read한 경우

지금은 비어있지만 누가 쓸 수도 있으니 기다려야 되나?

  • 어떤 프로세스가 파이프에 대해서 write용 file descriptor를 open해놓고 있다면
    • 시스템이 기다려야 한다고 판단, 파이프에 뭔가가 쓰여질 때까지 block된다.
  • 만약 아무도 파이프에 대해서 write용 file descriptor를 open을 해놓지 않았다면,
    • 기다리지 않고 바로 0을 리턴한다.

 

 

저작자표시 비영리 변경금지 (새창열림)

'Study > 시스템프로그래밍' 카테고리의 다른 글

[시스템프로그래밍] 시간과 타이머  (0) 2023.12.03
[시스템프로그래밍] Signals  (1) 2023.12.03
[시스템프로그래밍] 디렉토리 엔트리, hard/symbolic link, stat에 관하여  (0) 2023.11.02
[시스템프로그래밍] 프로그램, 프로세스, 스레드에 관하여  (2) 2023.10.26
[시스템프로그래밍] 리눅스 터미널과 명령어 요약 - 2  (1) 2023.10.26
'Study/시스템프로그래밍' 카테고리의 다른 글
  • [시스템프로그래밍] 시간과 타이머
  • [시스템프로그래밍] Signals
  • [시스템프로그래밍] 디렉토리 엔트리, hard/symbolic link, stat에 관하여
  • [시스템프로그래밍] 프로그램, 프로세스, 스레드에 관하여
퀵차분
퀵차분
Web Developer 🥐
  • 퀵차분
    QC's Devlog
    퀵차분
  • 전체
    오늘
    어제
    • 분류 전체보기 (178)
      • Frontend (31)
      • Fedify (4)
      • Study (42)
        • NestJS (2)
        • Node.js (3)
        • Modern JS Deep Dive (13)
        • SQL (1)
        • Network (1)
        • 프롬프트 엔지니어링 (4)
        • 인공지능 (9)
        • 시스템프로그래밍 (11)
        • 선형대수학 (1)
      • Intern (4)
      • KUIT (21)
      • Algorithm (48)
        • Baekjoon(C++) (26)
        • Programmers(JavaScript) (22)
      • 우아한테크코스(프리코스) (4)
      • Project (10)
        • crohasang_page (3)
        • PROlog (4)
        • Nomadcoder (2)
      • 생각 (4)
      • Event (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    HTML
    프론트엔드
    시스템프로그래밍
    인공지능
    리액트
    next.js
    프로그래머스
    티스토리챌린지
    fedify
    typescript
    자바스크립트
    알고리즘
    javascript
    오블완
    음악추천
    프로그래머스 자바스크립트
    KUIT
    타입스크립트
    백준
    react
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
퀵차분
[시스템프로그래밍] pipe에 관하여
상단으로

티스토리툴바