파이프 예제

파이프는 FIFO(첫 번째 처음 에서 처음)를 동작하고 파이프는 큐 데이터 구조처럼 동작합니다. 읽기 및 쓰기 의 크기는 여기에 일치할 필요가 없습니다. 한 번에 512바이트를 쓸 수 있지만 파이프에서 한 번에 1바이트만 읽을 수 있습니다. 파이프는 한 명령의 출력이 다음에 입력 역할을하도록 두 개 이상의 명령을 사용할 수 있습니다 리눅스에서 명령입니다. 즉, 각 프로세스의 출력은 파이프라인과 같은 다음 프로세스에 대한 입력으로 직접 입력됩니다. 기호 `|`는 파이프를 나타냅니다. 개념적으로 파이프는 한 프로세스의 표준 출력이 다른 프로세스의 표준 입력이 되도록 두 프로세스 간의 연결입니다. UNIX 운영 체제에서 파이프는 관련 프로세스(프로세스 간 통신) 간의 통신에 유용합니다. C 프로그래밍 언어로 `파이프라인`을 만드는 것은 간단한 셸 예제보다 좀 더 관련이 있을 수 있습니다. C를 사용하여 간단한 파이프를 작성하려면 pipe() 시스템 호출을 사용합니다.

두 정수의 배열인 단일 인수를 사용하며 성공하면 배열에는 파이프라인에 사용할 두 개의 새 파일 설명자가 포함됩니다. 파이프를 만든 후 프로세스는 일반적으로 새 프로세스를 생성합니다(자식이 열린 파일 설명자 상속 기억). 다음 예제에서는 파이프의 실제 값을 보여 주며, 파이프의 실제 값을 보여 주실 수 있습니다. „/bin/ls-al/” 명령과 „/usr/bin/tr a-z A-Z” 명령 사이에 파이프를 만듭니다. 이는 셸 명령을 실행하는 것과 같습니다. 두 파일 설명자의 배열은 fd[2]입니다. fd[1]에 기록된 모든 것은 fd[0]에서 읽게 됩니다. 위의 예제에서는 상위 프로세스를 파이프에 대한 표준 출력을 포기하고 프로세스 자체가 cmd1의 임원으로 대체된 상태로 전환했습니다. 상위 프로그램과 입력 및 출력 스트림을 유지하지만 두 자식 프로세스 간에 파이프를 실행하려면 두 자식을 포크해야 합니다. 파이프는 동시에 두 개 이상의 명령을 매시업하고 연속적으로 실행하는 데 도움이됩니다.

당신은 순식간에 복잡한 작업을 수행 할 수있는 강력한 명령을 사용할 수 있습니다. 아래 예제에서는 파일 `abc`에 있는 내용의 역정렬을 보여 주습니다. 리눅스는 awk, grep, sed, 주문 및 wc와 같은 필터 명령을 많이 가지고 있습니다. 필터는 하나의 명령에서 입력을 받아 일부 처리를 수행하고 출력을 제공합니다. 먼저 파이프를 만듭니다. 그런 다음 우리는 자식 프로세스를 포크합니다.