프로세스는 다른 프로세스의 입력을 기다립니다.

프로세스는 다른 프로세스의 입력을 기다립니다.

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

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

이를 위해 systemd 서비스를 사용하려고 했지만 입력을 받을 수 없습니다.

답변1

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

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

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

프로세스가 완전히 자동화되고 자체적으로 데이터를 수신하고 전송하며 수동 개입이 필요하지 않다면 시스템 서비스인지 여부는 중요하지 않습니다. 정보를 파일에 기록하거나 디버그할 수 있도록 기록하기만 하면 됩니다. 무슨 일이야?

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

관련 정보