Среда, 11 декабря 2019

named pipe 예제

38

컴퓨팅에서 명명된 파이프(해당 동작에 대한 FIFO라고도 함)는 유닉스 및 유닉스와 같은 시스템의 기존 파이프 개념을 확장하는 것이며, 프로세스 간 통신(IPC)의 방법 중 하나입니다. 개념은 또한 OS/2 와 마이크로소프트 윈도우에서 발견, 의미 체계는 실질적으로 다르지만. 전통적인 파이프는 «이름 없는» 프로세스만큼만 지속됩니다. 그러나 명명된 파이프는 시스템이 최대인 한 프로세스의 수명 이상으로 지속될 수 있습니다. 더 이상 사용하지 않으면 삭제할 수 있습니다. 일반적으로 명명된 파이프가 파일로 나타나며 일반적으로 IPC에 대해 파이프에 연결하는 프로세스가 있습니다. 명명된 파이프의 또 다른 이름은 FIFO(선착권 우선)입니다. 우리가 특별한 파일의 일종인 명명 된 파이프를 만들 수있는 시스템 호출 (mknod())를 보자. 다음 셸 스크립트는 파이프에서 읽습니다. 파이프가 존재하지 않는 경우 먼저 파이프를 생성한 다음 «종료»를 볼 때까지 루프에서 읽습니다. 파이프는 일반적으로 단방향 통신으로 제한되었으며 양방향 통신을 위해 적어도 두 개의 파이프가 필요합니다. 파이프는 상호 관련 프로세스에만 적합합니다.

파이프는 관련없는 프로세스 통신에 사용할 수 없습니다, 예를 들어, 우리는 하나의 터미널에서 하나의 프로세스를 실행하고 다른 터미널에서 다른 프로세스를 실행하려는 경우, 파이프와 함께 할 수 없습니다. 우리는 두 프로세스 사이에 의사 소통하는 간단한 방법이 있습니까, 간단한 방법으로 관련이없는 프로세스를 말합니까? 대답은 `예`입니다. 명명된 파이프는 두 개 이상의 관련없는 프로세스 간의 통신을 의미하며 양방향 통신을 가질 수도 있습니다. 예를 들어 파이프를 만들고 파이프에 파이프된 것을 압축하도록 gzip을 설정할 수 있습니다. 명명된 파이프는 유닉스와 달리 일반 파일 시스템 내에서 파일로 만들 수 없습니다. 또한 유닉스 와 는 달리 명명 된 파이프는 휘발성입니다 (마지막 참조가 닫힌 후 제거됨). 모든 파이프는 명명된 파이프 파일 시스템(NPFS)의 루트 디렉토리에 배치되며, 특수 경로 \pipe(즉, «foo»라는 파이프는 .pipefoo)의 전체 경로 이름을 갖습니다. 파이프 라이닝에 사용되는 익명 파이프는 실제로 임의의 이름을 가진 파이프로 명명됩니다. Windows NT 명명된 파이프는 보안 컨텍스트를 상속할 수 있습니다. 위의, 대부분의 유닉스 사용자에게 익숙한, «이름없는 파이프»의 예입니다.