본문 바로가기
코스웨어/15년 스마트컨트롤러

20150730-7번-김재홍-IPC(내부 프로세스 간 통신 설비)통신

by 알 수 없는 사용자 2015. 7. 31.
728x90
반응형

이번 11장에서는 IPC에 대해 알아보겠습니다.

컴퓨터에서도 각 프로그램들이 네트워크를 구성하고 있지만 인터넷처럼 복잡하진 않습니다.

 

단일 컴퓨터에서도 각 프로그램들이 네트워크를 구성해서 서로 정보를 주고 받을 때 더 효율적으로 정보를 처리할 수 있습니다.


이런 이유로 유닉스 컴퓨터 개발자들은 컴퓨터 내부의 프로세스들이 서로 데이터를 주고 받을 수 있는 Inter Process Communication(내부 프로세스 간 통신 설비)를 개발했습니다.


이 IPC는 IPC의 확장이 인터넷 통신이라고 이해해도 될 만큼 유사한 통신방식입니다.



소켓 프로그래밍에는 3가지의 방식이 있습니다.


이 중에서 오늘은 프로세스 간에 통신을 하는 방법을 배울 것입니다.


교과서263페이지에 나오는 단방향 통신 예제입니다.




같은 프로그램간의 통신에서는 내부변수가 구심점입니다. 파이프가 외부에서 접근이 불가합니다.

다음은 소스자체가 동일한 프로그램인 에이와 에이다시입니다.




외부의 다른 프로세스와의 파이프통신에서는 가교를 놓아 구심점을 만들어 냅니다.

이렇게 가교가 될 파일은 이름이 있어야 하고 리눅스 운영체제에서는 네임드 파이프named pipe를 제공합니다.


네임드파이프는 mkfifo함수로 생성할 수 있습니다.


네임드파이프를 만드는 방법이 mkfifo

명령어를 만드는 방법이 mknode 입니다.


여기서 FIFO는 선입선출first in first out을 말하고 스택에서의 후입선출LIFO(last in first out)과 다른 방식입니다.



tmp는 리눅스 임시경로 디렉토리입니다.

참고로 확장자를 알아보는 것은 윈도우밖에 없습니다.

다음과 같이 아무위치경로에서나  ll /  명령을 치면 tmp를 확인할 수 있습니다.




아래는 네임드 파이프를 만드는 예제 프로그램입니다.

프로그램을 실행하고 나서 ls로 /tmp/myfifo 파일을 확인해 보면 네임드 파이프를 확인할 수 있습니다.




다음은 네임드 파이프 예제프로그램을 만들어 보겠습니다. (교과서267페이지)

아래는 서버/클라이언트 소스와 여러개의 클라이언트가 접속한 화면입니다.


채팅의 예로 적은 멘트가 오글거리지만 급하게 화면출력을 하려다보니 이렇게 되었음을 용서해주세요 ㅜㅜ



다음은 유닉스 도메인 소켓 예제 프로그램입니다. (교과서272페이지)

유닉스 도메인 소켓을 이용한 서버/클라이언트 프로그램을 만들어 보겠습니다.

아래는 교과서 4장의 인터넷 에코 서비스 프로그램을 내부 서비스용으로 재작성한 소스와 실행결과입니다.








728x90