프로세스 간 통신은 서로 다른 프로세스 간에 정보를 확산하거나 교환하는 것입니다. 그러면 두 당사자가 모두 액세스할 수 있는 서로 다른 프로세스 간에는 어떤 미디어가 존재합니까? 프로세스의 사용자 공간은 서로 독립적이며 일반적으로 서로 액세스할 수 없습니다. 유일한 예외는 공유 메모리 영역입니다. 그러나 시스템 공간은 "공공 장소"이므로 커널은 분명히 그러한 조건을 제공할 수 있습니다. 그 외에도 양 당사자가 액세스할 수 있는 주변 장치입니다. 이러한 의미에서 두 프로세스는 물론 디스크의 일반 파일을 통해 또는 "레지스트리" 또는 기타 데이터베이스의 특정 항목 및 레코드를 통해 정보를 교환할 수도 있습니다. 넓은 의미에서 이는 프로세스 간 통신의 수단이기도 하지만 일반적으로 "프로세스 간 통신"으로 간주되지 않습니다. 왜냐하면 이러한 통신 방법의 효율성은 너무 낮고, 프로세스 간 통신에 대한 사람들의 요구 사항은 어느 정도의 실시간 성능을 갖는 것이기 때문입니다.
관련 권장 사항: "php 튜토리얼"
Linux에서 프로세스 간 통신의 여러 주요 방법:
1. 파이프(Pipe) 및 명명된 파이프(Named Pipe)
파이프는 다음 용도로 사용할 수 있습니다. 사람과 친척 관련 프로세스 간의 통신을 위해 파이프에 이름이 없다는 한계를 극복하여 파이프의 기능 외에도 관련 없는 프로세스 간의 통신도 가능하게 합니다.
파이프에는 세 가지 유형이 있습니다.
(1) 일반 파이프 파이프: 일반적으로 제한이 있습니다. 첫째, 한 방향으로만 전송할 수 있는 반이중이며, 두 번째는 상위 파이프와 파이프 간에만 사용할 수 있습니다. 하위 프로세스.
(2) 스트림 파이프 s_pipe: 첫 번째 제한이 제거되고 양방향 전송이 가능합니다.
(3) Named Pipe name_pipe: 두 번째 제한이 제거되고 관련되지 않은 여러 프로세스 간에 통신이 수행될 수 있습니다.
2. 신호
신호는 프로세스 간 통신에 사용되는 것 외에도 수신 프로세스에 신호를 보내는 데 사용되는 비교적 복잡한 통신 방법입니다. Linux 외에도 초기 Unix 신호 의미 함수 sigal을 지원하는 것 외에도 의미가 Posix.1 표준을 준수하는 신호 함수 sigaction도 지원합니다(실제로 이 함수는 BSD를 기반으로 합니다. 신호 메커니즘을 통합하고 외부 인터페이스를 통합한 후 BSD는 이를 sigaction 신호 기능으로 다시 구현했습니다.
3. 메시지 큐(Message Queue)
메시지 큐는 Posix 메시지 큐 시스템V 메시지 큐를 포함하는 메시지의 연결된 목록입니다. 충분한 권한이 있는 프로세스는 큐에 메시지를 추가할 수 있고, 읽기 권한이 부여된 프로세스는 큐에서 메시지를 읽을 수 있습니다. 메시지 큐는 소량의 정보를 전달하는 신호의 단점을 극복하고 파이프는 형식화되지 않은 바이트 스트림만 전달할 수 있으며 버퍼 크기는 제한됩니다.
4. 공유 메모리
를 사용하면 여러 프로세스가 동일한 메모리 공간에 액세스할 수 있으며 이는 가장 빠른 IPC 형식입니다. 이는 다른 통신 메커니즘의 작동 효율성을 낮추도록 설계되었습니다. 프로세스 간 동기화 및 상호 배제를 달성하기 위해 세마포어와 같은 다른 통신 메커니즘과 함께 사용되는 경우가 많습니다.
5. 세마포어(semaphore)
는 주로 프로세스 간, 동일한 프로세스의 서로 다른 스레드 간 동기화 수단으로 사용됩니다.
6. 소켓
다른 시스템 간의 프로세스 간 통신에 사용할 수 있는 보다 일반적인 프로세스 간 통신 메커니즘입니다. 원래 Unix 시스템의 BSD 분기용으로 개발되었지만 이제는 일반적으로 다른 Unix 계열 시스템에도 이식 가능합니다. Linux 및 System V 변형 모두 소켓을 지원합니다.
위 내용은 PHP 프로세스 간에 통신하는 방법에는 여러 가지가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!