다른 프로세스의 입력을 기다리는 프로세스

다른 프로세스의 입력을 기다리는 프로세스

두 프로세스가 통신하는 메커니즘이 필요합니다. 프로세스 A는 일부 작업을 수행하고 다른 프로세스 B의 입력 [파일 경로]을 기다립니다. Linux 시스템이 재부팅될 때마다 이런 일이 발생해야 합니다.

이러한 일이 발생하는 횟수는 프로세스 A의 횟수에 따라 제어됩니다.

systemd 서비스를 사용하여 이 작업을 수행하려고 생각했지만 입력을 얻을 수 없습니다.

답변1

이를 해결하는 방법은 소켓을 사용하는 것입니다. 물론 이는 프로세스에서 네트워크 소켓 라이브러리를 사용해야 함을 의미하지만 이는 두 프로세스의 통신을 허용하는 가장 일반적인 방법입니다.

두 프로세스가 동일한 시스템에 있으므로 systemd unix 소켓을 구성하는 것이 좋습니다.

그런 다음 프로세스 A는 소켓에 연결하여 수신 대기하고 프로세스 B는 이를 통해 데이터를 보낼 수 있습니다.

프로세스가 완전 자동으로 이루어지고 스스로 데이터를 수신하고 전송하며 수동 개입이 필요하지 않다면 시스템 서비스인지 여부는 중요하지 않습니다. 파일에 정보를 기록하거나 저널링하도록 하면 무슨 일이 일어나고 있는지 디버깅할 수 있습니다. .

다음은 이를 시작하는 데 도움이 되는 몇 가지 링크입니다.
systemd.socket 매뉴얼
systemd에서 소켓을 사용하여 서비스를 설정하는 방법에 대한 간단한 안내서
C의 프로세스 간 통신에 대한 일반적인 아이디어

관련 정보