2017-12-20 28 views
1

내 서버에서 nodejs 데몬을 실행 중입니다. 표준 입력에서 일부 입력을하고 레일즈 컨트롤러에서 stdout을 읽으 려합니다. Ruby에서 가능합니까?루비로 실행중인 백그라운드 프로세스에 연결할 수 있습니까?

나는 Open3을보고 있지만 새 프로세스를 생성 할 수있는 기회 만 제공합니다.

모든 요청시 시작 오버 헤드가 너무 높기 때문에 nodejs 프로세스를 계속 실행해야합니다.

+0

노드 프로세스를 설정하여 서버를 실행하고 주어진 포트에서 입력을 허용 할 수 있습니다. 그럼 그냥 루비에서 노드에 노드를 요청 – jakerella

+0

HTTP 요청의 오버 헤드가 꽤 높습니다 – ciaoben

+1

의심의 여지가 ... 그냥 그렇게 생각하는 다른 방법 (나는 루비 사람이 아니야). 당신은 실제로 HTTP 아래로 이동할 수 있습니다, [Net API] (https://nodejs.org/api/net.html)를 사용하여 TCP 요청을 직접 만드십시오 – jakerella

답변

0

일반적으로 실행중인 프로세스의 IO 스트림에 연결하는 방법은 처음에는 그렇게 설정하지 않은 한 연결할 수 없습니다. 예를 들어, 프로세스가 pipe에서 읽도록 설정 되었다면 : Ruby가 다른 파일과 마찬가지로 그 파이프에 쓰기 만하면됩니다 (이것이 Open3 lib가하는 것입니다).

일반적으로 데몬의 경우 파이프로 입력을 하이재킹하는 것보다 데몬을 사용하는 것이 더 효과적입니다. 특정 데몬과 실행중인 운영 체제에 따라 다릅니다. 예를 들어, sockets은 * nix 시스템에서 실행중인 프로세스와 통신하는 보편적 인 방법입니다.