네트워크 프로그래밍 CH11. 프로세스 간 통신

Alpha, Orderly·2023년 4월 8일
0

fwrite

#include <stdio.h>  // C++ 에서는 <cstdio>

size_t fwrite(const void* ptr, size_t size, size_t count, FILE* stream);
  • ptr
    • 스트림에 쓰여질 배열을 가리키는 포인터.
  • size
    • 그 배열의 각각의 원소의 크기
  • count
    • 그 배열의 원소의 수 이다. 이 때, 각 원소의 크기는 size 바이트 이다.
  • stream
    • 내용을 쓸 스트림을 가리키는 FILE 포인터

프로세스간 통신

  • 두 프로세스 사이의 데이터 전달
  • 두 프로세스가 함께 공유하는 메모리가 존재해야한다.
  • 운영체제가 별도의 메모리 공간을 마련해 주어야 한다.

파이프 기반 프로세스 통신

#include <unistd.h>

int pipe(int filedes[2]);

성공시 0, 실패시 -1을 반환한다.
  • filedes[0] : 파이프로부터 데이터를 수신하는 파일 디스크립터가 들어간다.
  • filedes[1] : 파이프로 데이터를 전송하는데 사용되는 파일 디스크립터가 들어간다.
  • 위의 함수가 호출되면, 운영체제는 서로 다른 프로세스가 함께 접근할 수 있는 메모리 공간을 만들고,
    이 공간의 접근에 사용되는 파일 디스크립터를 반환한다.

  • 하나의 파이프를 통해 양방향 통신을 하는것은 적절하지 못하다
  • 양방향 통신을 위해선 두개의 파이프를 사용하는것이 좋다.
  • 입출력 타이밍에 따라 데이터의 흐름이 영향을 받지 않는다.

프로세스간 통신의 구현

profile
만능 컴덕후 겸 번지 팬

0개의 댓글