파이프를 이용한 프로세스간 통신
This presentation is the property of its rightful owner.
Sponsored Links
1 / 6

파이프를 이용한 프로세스간 통신 파이프의 용량 초과시 다른 프로세스에 의해 자료가 읽혀져 파이프에 충분 한 공간이 마련될 때까지 수행이 중단 PowerPoint PPT Presentation


  • 135 Views
  • Uploaded on
  • Presentation posted in: General

파이프를 이용한 프로세스간 통신 파이프의 용량 초과시 다른 프로세스에 의해 자료가 읽혀져 파이프에 충분 한 공간이 마련될 때까지 수행이 중단 예제 (unix_test1.c) – p215 파이프의 용량을 초과하는 자료를 한 번에 write 하면 , write 는 여러 단계로 수행되어야 한다 . 이때 여러 프로세스가 같은 파이프에 동시에 쓰지 않도록 주의할 것. 파이프를 이용한 프로세스간 통신 쓰기 전용 파일 기술자를 닫았을 때 ; - 자료를 쓰기 위해 해당 파이프를 개방한 다른 프로세스가 존재하면 OK

Download Presentation

파이프를 이용한 프로세스간 통신 파이프의 용량 초과시 다른 프로세스에 의해 자료가 읽혀져 파이프에 충분 한 공간이 마련될 때까지 수행이 중단

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


4427002

  • 파이프를 이용한 프로세스간 통신

    • 파이프의 용량 초과시 다른 프로세스에 의해 자료가 읽혀져 파이프에 충분 한 공간이 마련될 때까지 수행이 중단

    • 예제 (unix_test1.c) – p215

    • 파이프의 용량을 초과하는 자료를 한 번에 write하면, write는 여러 단계로

    • 수행되어야 한다. 이때 여러 프로세스가 같은 파이프에 동시에 쓰지 않도록 주의할 것


4427002

  • 파이프를 이용한 프로세스간 통신

    • 쓰기 전용 파일 기술자를 닫았을 때;

      • -자료를 쓰기 위해 해당 파이프를 개방한 다른 프로세스가 존재하면 OK

      • -파이프가 비어있는 경우, 읽으려는 프로세스는 작업을 수행할 수 없음

      • 읽기를 기다리며 잠들어 있는 프로세스를 깨우고 0 return

    • 읽기 전용 파일 기술자를 닫았을 때;

      • 자료를 읽기 위해 해당 파이프를 개방한 다른 프로세스가 존재하면 OK

      • 파이프로부터 자료를 읽어 들이는 프로세스가 없으면 그 파이프에 자료를 쓰기 위해 기다리던 프로세스들은 SIGPIPE 시그널을 받고 -1로 return


4427002

  • 봉쇄되지 않은 read와 write

    • fstat 사용

      • 여러 프로세스가 파이프로부터 자료를 읽어들이는 경우, fstat와 read

      • 사이에 다른 프로세스가 파이프로부터 자료를 읽을 수 있음

    • O_NONBLOCK 사용

      • fcntl(filedes, F_SETFL, O_NONBLOCK)

      • 파이프가 차있을 경우 write는 -1로 복귀, errorno를 EAGAIN으로 지정

      • 파이프가 비어 있을 경우 read는 -1로 복귀, errorno를 EAGAIN으로 지정

    • 예제 – unix_test2.c (p220)


4427002

  • 파이프를 이용한 프로세스간 통신

    • 실습

    • - 부모는 1000개의 random number를 생성해서 자식에게 보낸다

    • - 자식은 평균값을 계산해서 부모에게 보낸다

    • - 부모는 평균 값을 출력한다


4427002

  • 다수의 파이프를 취급하기 위한 select 사용

    • 그림 7.4

      • 부모 프로세스가 server로 동작, 자식 프로세스가 client로 동작

    • - int select(int nfds, fd_set *readfds, fd_set *writefds,

    • fd_set *errorfds, struct timeval *timeout);

      • nfds : 서버가 잠재적 흥미를 가진 파일 기술자의 수

      • readfds : 읽을 만한 가치가 있는가?

      • writefds : 쓰기를 받아 들일 준비가 되어 있는가?

      • errorfds : error가 발생했는가?

      • timeout = null (block), timeout = 0 (return), timeout > 0 (지정된 시간 후 return)


4427002

  • 다수의 파이프를 취급하기 위한 select 사용

    • 예제 (unix_test4.c) – p226

    • (실습)

      • 두 child를 생성해서 각각 filename (data1, data2)를 parent에게 전송

      • parent를 filename을 받아 open, read, 화면 출력을 실행


  • Login