stdin을 통해 이미지를 수신하고 이를 다른 형식으로 변환하여 stdout으로 출력할 수 있는 명령줄 유틸리티가 있습니다.
프로그램에서 이것을 사용하고 있지만 실행할 때마다 하위 프로세스를 호출해야 하는데 속도가 매우 느립니다.
그렇다면 systemd를 사용하여 이 명령줄 프로그램을 메모리에 유지되고 어떻게든 이미지 데이터를 수신하고 출력할 수 있는 "서버"로 전환할 수 있는 방법이 있는지 궁금합니다.
답변1
- 물론 프로그램을 미리 시작할 수 있지만 표준 입력으로 아무 것도 보내지 않을 수 있습니다.하지만;그러면 필요할 때 이미 시작됐어요. 물론 "사용"이 끝나면 프로세스가 종료되고 다른 프로세스를 시작해야 합니다. 그러나 파일 변환 및 쓰기도 즉각적이지 않다고 가정하면 이미 다음 프로세스를 시작하고 후속 이미지를 준비할 수 있습니다. 실제로 대기 중인 프로세스 풀이 있을 수 있습니다. Linux 웹 서버 초기의 상당히 표준적인 기술인 "작업자 프로세스"입니다. (이 중 어느 것도 systemd와 관련이 없습니다.)
- 이곳은 도서관입니다. 올바른 방법은 이러한 핸드오버에 비용이 많이 드는 경우 데이터를 별도의 프로세스에 넘겨주지 않는 것입니다(어쨌든 그럴지는 의문입니다. 예, 프로세스 생성에는 비용이 많이 들지만 Linux는 실행 파일을 캐시합니다 ...). 대신, 프로그램에서 직접 caif 라이브러리를 사용하여 데이터를 변환하세요. 그것이 바로 도서관의 존재 이유입니다.