Blog

2 August 2019

리눅스 named pipe 예제

컴퓨팅에서 명명된 파이프(FIFO라고도 함)는 인턴 프로세스 통신을 위한 방법 중 하나입니다. FIFO라는 이름의 파이프 (FIFO)를 사용하는 것은 파일의 일종입니다, 우리는 그것과 관련된 모든 시스템 호출을 사용할 수 있습니다 즉, 열기, 읽기, 쓰기, 닫기. Linux에서 파이프 명령을 사용하면 한 명령의 출력을 다른 명령으로 보낼 수 있습니다. 용어에서 알 수 있듯이 파이핑은 추가 처리를 위해 한 프로세스의 표준 출력, 입력 또는 오류를 다른 프로세스로 리디렉션할 수 있습니다. 이전 리눅스 시스템에서 명명 된 파이프는 일반적으로 /etc 디렉토리에 있는 mknod 프로그램에 의해 만들어집니다. 더 현대적인 시스템에서 mkfifo는 표준 유틸리티입니다. mkfifo 프로그램은 하나 이상의 파일 이름을 이 작업에 대한 인수로 가져와 해당 이름으로 파이프를 만듭니다. 예를 들어, 이름 pipe1을 사용하여 명명된 파이프를 작성하려면 명령을 부여합니다. 명명 된 파이프는 다른 이름을 보증하기 위해 더 일반적으로 사용되는 유닉스 / 리눅스 파이프에서 충분히 다르지만,하지만 “파이프”정말 그들이 프로세스 간에 데이터를 이동하는 방법의 좋은 이미지를 호출, 그래서 “명명 된 파이프”꽤 잘 맞는. 어쩌면 당신은이 매우 영리한 유닉스 / 리눅스 기능에서 크게 도움이 될 것입니다 작업을 건너 올 것이다. PostgreSQL의 명령줄 유틸리티인 psql은 명명된 파이프의 데이터 로드도 지원합니다.

[4] 명명된 파이프의 작동 방식을 표시하는 가장 간단한 방법은 예제와 함께하는 것입니다. 위에 표시된 대로 파이프를 만들었다고 가정합니다. 하나의 가상 콘솔1에서 유형: 두 개의 명명된 파이프, pipe1 및 pipe2를 작성합니다. 명령 실행: “깨진 파이프” 메시지가 발행되는지 여부는 ctrl-C가 누르는 정확한 순간의 이벤트에 따라 달라집니다. 두 번째 고양이가 x를 읽은 경우 ctrl-C를 누르면 두 번째 고양이가 중지되고 pipe1이 닫히고 첫 번째 고양이가 메시지없이 조용히 멈춥니다. 반면, 두 번째 고양이가 x를 쓰기를 기다리는 경우 ctrl-C는 pipe2가 닫히게 하여 첫 번째 고양이가 쓸 수 있고 오류 메시지가 발행됩니다. 이러한 종류의 임의 동작은 “경합 조건”이라고 합니다. 파이프의 다른 종류는 FIFO라고도 하는 “명명된” 파이프입니다.

FIFO는 “선착순, 선착순”을 의미하며 들어오는 바이트의 순서가 나오는 것과 동일한 속성을 나타냅니다. 명명된 파이프의 “이름”은 실제로 파일 시스템 내의 파일 이름입니다. 파이프는 몇 가지 차이점이 있는 다른 파일로 ls로 표시됩니다: 명명된 파이프는 시스템이 가동중이거나 삭제될 때까지 지속될 수 있습니다. FIFO(선차, 선차) 메커니즘을 따르는 특수 파일입니다. 일반 파일처럼 사용할 수 있습니다. 즉, 쓰기, 읽기 및 열거나 닫을 수 있습니다. 명명된 파이프를 만들려면 파이프 또는 명명되지 않은 파이프 명령에 대한 구문이 | 입니다. 두 명령 사이의 문자: 명명된 파이프에 쓰는 프로세스를 보면 사용하는 리소스가 얼마나 적는지에 놀랄 수 있습니다.

Bize Ulaşın