mkfifo 예제

Posted by adminfeira - 2 agosto, 2019 - Sin categoría - No Comments

누군가가 리눅스에서 Bash에서 명명 된 파이프를 사용 하 여 간단한 예제를 게시할 수 있습니까? 다음은 예제입니다. FIFO, 포크를 생성한 다음 부모 프로세스가 FIFO를 통해 자녀에게 이야기합니다. (이것은 또한 «이름 없는 파이프»로 달성될 수 있습니다.) 그러나 UNIX의 또 다른 종류의 «파일»은 «명명 된 파이프»또는 «FIFO»(«선차, 선열», 즉 큐)입니다. 명명된 파이프는 mkfifo 시스템 호출을 통해 만들어집니다. 명명된 파이프는 파이프 시스템 호출로 작성된 기존 파이프와 매우 유사합니다. 그러나 파이프는 두 개의 파일 설명자를 통해 액세스를 제공하지만 명명된 파이프는 경로의 파일 시스템을 통해 액세스됩니다. 명명 된 파이프의 하나의 매우 유용한 응용 프로그램은 완전히 관련이없는 프로그램이 서로 통신 할 수 있도록하는 것입니다. 예를 들어, 어떤 종류의 요청(파일 인쇄, 데이터베이스 액세스)을 서비스하는 프로그램은 읽기 위해 파이프를 열 수 있습니다. 그런 다음 파이프를 열고 명령을 작성하여 다른 프로세스에서 요청을 할 수 있습니다. 즉, «서버»는 «클라이언트»를 대신하여 작업을 수행할 수 있습니다. 클라이언트가 작성되지 않거나 서버가 읽힌 경우에도 차단이 발생할 수 있습니다. 명명 된 파이프의 실용적인 사용의 가장 좋은 예 중 하나 …

FIFO 파일 만들기 FIFO 파일을 만들기 위해 mkfifo를 호출하는 함수가 사용됩니다. 위의, 대부분의 유닉스 사용자에게 익숙한, «이름없는 파이프»의 예입니다. 파이프는 커널 내부에만 존재하며 파이프를 만든 프로세스(이 경우 bash shell)에서 액세스할 수 없습니다. 아직 모르는 경우 부모 프로세스는 프로그램을 실행하는 별도의 자식 프로세스를 만드는 프로그램에서 시작된 첫 번째 프로세스입니다. 이러한 빈 명명된 파이프 중 하나를 살펴보기 전에 한 걸음 뒤로 물러서서 명명된 파이프가 어떻게 설정되는지 살펴보겠습니다. mkfifo라는 명령을 사용합니다. 왜 «FIFO»에 대한 참조? 명명된 파이프는 FIFO 특수 파일이라고도 합니다. «FIFO»라는 용어는 첫 번째 문자인 첫 번째 문자를 나타냅니다. 아이스크림으로 접시를 채우고 먹기 시작하면 LIFO (마지막 에, 선입선) 기동을할 것입니다. 밀짚을 통해 밀크 셰이크를 빨아 경우, 당신은 FIFO 하나를하고있을 것입니다.

다음은 명명된 파이프를 만드는 예제입니다. 명명된 파이프의 작동 방식을 보여주는 가장 간단한 방법은 예제를 참조하십시오. 위에 표시된 대로 파이프를 만들었다고 가정합니다. 하나의 가상 콘솔1에서, 유형 : 이전 리눅스 시스템에서, 명명 된 파이프는 일반적으로 /etc 디렉토리에있는 mknod 프로그램에 의해 생성됩니다. 더 현대적인 시스템에서 mkfifo는 표준 유틸리티입니다. mkfifo 프로그램은 하나 이상의 파일 이름을 이 작업에 대한 인수로 가져와 해당 이름으로 파이프를 만듭니다. 예를 들어, 이름 pipe1으로 명명 된 파이프를 만들려면 명령을 제공: mkfifo() 이름 pathname와 FIFO 특별 한 파일을 만든다. 여기 모드는 FIFO의 권한을 지정합니다. 그것은 일반적인 방법으로 프로세스의 umask에 의해 수정됩니다 : 생성 된 파일의 권한은 (모드 및 ~ umask)입니다.