부팅 할 때 외부 Node.js 서버를 생성하고 종료 할 때 종료하는 Elixir 앱 (GenServer
사용)을 만들고 있습니다. Node.js 서버를 성공적으로 시작할 수는 있지만 종료 할 수는 없습니다.시작된 외부 프로세스를 종료하는 방법은 무엇입니까?
그래서 내 질문은 심지어 Porcelain
패키지, 내가 외부 프로세스를 종료 할 수있는 방법 을 : 나는 현재 사용하려고했습니다 내가 엘릭서에서 시작 했어? ElixirForum
부팅 할 때 외부 Node.js 서버를 생성하고 종료 할 때 종료하는 Elixir 앱 (GenServer
사용)을 만들고 있습니다. Node.js 서버를 성공적으로 시작할 수는 있지만 종료 할 수는 없습니다.시작된 외부 프로세스를 종료하는 방법은 무엇입니까?
그래서 내 질문은 심지어 Porcelain
패키지, 내가 외부 프로세스를 종료 할 수있는 방법 을 : 나는 현재 사용하려고했습니다 내가 엘릭서에서 시작 했어? ElixirForum
좋아, Unix Signals and Traps에 대한 몇 가지 연구를하고 Elixir Forum에 Erlang Mailing List 및 토론에 많은 이메일을 통과 한 후, 그것은 밝혀 :
때 프로세스가 종료되면 (포트가 닫힌 경우) 생성 된 프로그램/포트 은
STDIN
에EOF
이됩니다. 프로세스가 포트가 닫힌 시간을 감지하는 "표준"방법입니다. STDIN의 파일 끝입니다.
다른 프로그램은 정상적으로 STDIN
및 종료에 EOF
을 처리해야합니다. 이것은 대부분의 프로그램에서 작동하지만 Node.js 서버의 경우에는 발생하지 않습니다.
process.stdin.on('end',() => {
console.log("STDIN closed");
process.exit();
});
이
(즉, 하나 SIGINT
또는 SIGTERM
를 보낼) 엘릭서에서 외부 프로그램을 : 그래서 수동으로 응용 프로그램 종료에이 사건을 처리했다/얼랭
일반 goon 실행 파일이있는 도자기 라이브러리는 일반적인 경우에이 문제를 처리하는 한 가지 방법입니다. –
@FredtheMagicWonderDog를 사용하여 예제를 만들 수 있습니까? 'goon' 드라이버로'SIGTERM' 또는'SIGINT'를 어떻게 보내면됩니까? – Sheharyar
goon 실행 파일은 본질적으로 Porcelain 라이브러리의 메시지를 받아 들여 표준 신호를 구현하는 래퍼입니다. –