독립 실행형 프로그램에서 stdin/stdout에 액세스하는 방법은 무엇입니까?

독립 실행형 프로그램에서 stdin/stdout에 액세스하는 방법은 무엇입니까?

프로세스의 표준 입력 및 표준 출력에 액세스하는 방법을 이해하려고 합니다.

SSH를 통해서만 액세스할 수 있는 원격 컴퓨터가 있고 백그라운드에서 터미널 기반 프로그램을 실행하고 싶습니다. 즉, SSH 연결을 닫을 수 있도록 SSH 터미널을 통해 분리 모드에서 프로그램을 시작합니다.

이 프로그램에는 표준 입력 및 출력에서 ​​표준 출력으로의 사용자 입력을 수신하는 자체 터미널 기반 인터페이스가 있습니다.

내 질문은 원격 시스템의 다른 터미널이 액세스할 수 있도록 stdin/stdout을 어떻게 파이프합니까? 즉, 새 SSH 터미널을 열고 분리된 프로그램에 간단히 액세스합니다.

아니면 입력/출력을 파이프하여 SSH를 통해 로컬 컴퓨터로 터널링하고 동일한 방식으로 사용할 수 있도록 하려면 어떻게 해야 합니까?

screen너무 오래되어 업그레이드할 수 없기 때문에 효과를 얻기 위해 원격 시스템에서 사용할 수 없습니다 . 어느 쪽도 설치되지 않았습니다 tmux.

그러나 두 프로그램 모두 로컬 시스템에서 액세스할 수 있으므로 어떤 종류의 터널링이 가능하다면 문제가 해결될 수 있습니다.

답변1

이를 수행하는 더 좋은 방법이 있을 수 있지만 mkfifo두 개의 FIFO 파일을 생성하고 프로그램의 입력 및 출력을 두 개의 FIFO 파일로 리디렉션하는 방식으로 명령/스크립트를 실행할 수 있습니다.

따라서 명령을 실행하고 두 파일을 모두 생성한 후(그리고 SSH 연결을 닫은 후) 프로세스에 입력을 보낼 준비가 되면 간단히 SSH를 사용하여 보내려는 모든 입력을 에코할 수 있습니다.FIFO 파일 입력그런 다음 실행 중인 프로세스로 리디렉션됩니다.

그런 다음 출력은 출력 FIFO로 전송되며, 액세스할 준비가 되면 이에 액세스해야 하는 모든 프로그램이 출력을 한 줄씩 읽을 수 있습니다.

공정하게 경고합니다. 제가 지금 컴퓨터 앞에 있지 않기 때문에 이것이 완전히 정확하지 않을 수도 있습니다. 저는 FIFO 또는 일반 오래된 임시 파일이 당면한 작업에 적합한 도구인지에 관해 종종 혼란스럽습니다. 임시 파일을 생성 하려면 입력 및 리디렉션 출력에 FIFO가 필요 mktemp하지만 최종 솔루션은 적어도 위에서 설명한 것과 다소 유사할 것으로 생각됩니다. 즉 일부 리디렉션 마법입니다.

행운을 빌어요! 다른 분이 좀 더 구체적인 답변을 주실 수 있기를 바랍니다.

관련 정보