Computer Science/Network
[Network] 11. 프로세스간 통신
mobuk
2023. 5. 28. 18:30
프로세스간 통신의 기본 개념
프로세스간 통신
두 프로세스 사이에서의 데이터 전달이 가능하려면 두 프로세스가 공유하는 메모리가 공유해야한다. 하지만, 프로세스는 자신만의 메모리 공간을 독립적으로 가지고 있다. 그래서 운영체제가 별도의 메모리 공간을 마련해야한다.
파이프 기반의 프로세스 통신
#include <unistd.h>
int pipe(int filedes[2]);
int main(int argc, char *argv[])
{
int fds[2];
char str[] = "Who are you";
char buf[BUF_SIZE];
pid_t pid;
pipe(fds);
pid=fork();
if(pid==0)
{
write(fds[1], str, sizeof(str));
}
else
{
read(fds[0], buf, BUF_SIZE);
puts(buf);
}
return 0;
}
파이프는 양방향으로 보내는 것은 가능하지만, 데이터 흐름을 제어하는 것은 불가능에 가깝기 때문에 두 개의 파이프를 생성해야한다.
프로세스간 통신의 적용
메시지를 저장하는 형태의 에코 서버