이것은 리눅스에서 프로세스 간 통신 (IPC)에 대 한 시리즈의 두 번째 문서입니다. 첫 번째 기사는 공유 저장소를 통해 IPC에 초점을 맞췄습니다: 공유 파일 및 공유 메모리 세그먼트. 이 문서에서는 통신 프로세스를 연결하는 채널인 파이프로 전환합니다. 채널에는 바이트 를 쓰기 위한 쓰기 끝이 있고 FIFO(첫 번째, 처음) 순서로 이러한 바이트를 읽기 위한 읽기 끝이 있습니다. 일반적인 사용에서는 한 프로세스가 채널에 기록되고 다른 프로세스가 동일한 채널에서 읽습니다. 바이트 자체는 숫자, 직원 레코드, 디지털 영화 등 모든 것을 나타낼 수 있습니다. 파이프는 명명되고 명명되지 않은 두 가지 맛으로 제공되며 명령줄에서 또는 프로그램 내에서 대화식으로 사용할 수 있습니다. 예는 곧 입니다. 이 문서에서는 유행에서 벗어난 메모리 큐도 살펴봅니다. 파이프는 FIFO(첫 번째 처음 에서 처음)를 동작하고 파이프는 큐 데이터 구조처럼 동작합니다.
읽기 및 쓰기 의 크기는 여기에 일치할 필요가 없습니다. 한 번에 512바이트를 쓸 수 있지만 파이프에서 한 번에 1바이트만 읽을 수 있습니다. 파이프 통신은 단방향 통신으로만 간주됩니다. 그러나 부모와 자식이 파이프를 동시에 작성하고 읽어야 하는 경우 이 솔루션은 파이프를 사용하는 양방향 통신입니다. 양방향 통신을 설정하려면 두 개의 파이프가 필요합니다. 파이프는 하나의 프로세스 내에서 파이프를 사용하는 것은 의미가 없기 때문에, 항상 포크와 함께 사용된다. 이 예제에서는 두 개의 파이프가 작성됩니다. 그래서 우리는 개념적으로 예로 리눅스에서 우리의 일상 사용에 파이프를 사용, 파이프는 두 프로세스 사이의 연결, 그래서 한 프로세스에서 표준 출력다른 프로세스의 표준 입력된다. UNIX 운영 체제에서 파이프는 관련 프로세스(프로세스 간 통신) 간의 통신에 유용합니다. 파이프는 둘 이상의 관련 또는 상호 연관된 프로세스 간의 통신 매체입니다. 한 프로세스 내에서 또는 자식프로세스와 상위 프로세스 간의 통신일 수 있습니다. 또한 부모, 자식 및 손자 손녀 간의 통신과 같은 다단계 통신이 될 수 있습니다.
통신은 파이프에 하나의 프로세스 쓰기 및 파이프에서 다른 읽기에 의해 달성된다. 파이프 시스템 호출을 얻으려면 두 개의 파일을 만지작입니다. POSIX 표준은 쓰기가 PIPE_BUF 바이트를 초과하지 않는 한 쓰기가 인터리브되지 않도록 합니다. 리눅스 시스템에서 PIPE_BUF는 4,096바이트 크기입니다.