한 명령의 출력이 다른 명령으로 파이프됩니다. 두 명령을 모두 닫는 방법은 무엇입니까?

한 명령의 출력이 다른 명령으로 파이프됩니다. 두 명령을 모두 닫는 방법은 무엇입니까?

제안대로 Qt Assistant에 전화했습니다.스택 오버플로:

nc -lkU ~/.assistantfifo | assistant -enableRemoteControl &

Qt Assistant 창이 열리고 호출하면 jobs다음이 반환됩니다.

[1]  + running    nc -lkU ~/.assistantfifo | assistant -enableRemoteControl

그런 다음 Qt Assistant를 닫습니다("x"만 클릭하면 됩니다). 이제 jobs다음을 반환합니다.

[1]  + running    nc -lkU ~/.assistantfifo | 
       done       assistant -enableRemoteControl

따라서 nc계속 작업하려면 killall nc.

ncQt Assistant를 닫을 때 이 작업을 어떻게 수행할 수 있습니까? 아니면 뭔가 다른 일을 해야 할까요?

답변1

실행 중인 명령( nc일명 netcat)은 이 플래그를 사용하여 실행될 때 입력을 수신합니다 -l. 일반적으로 수신 모드의 netcat은 파일 끝 문자를 받으면 종료되지만 이 -k플래그는 이를 방지합니다. 즉, 명령이 호출되는 방식으로 인해 netcat은 사용자가 종료할 때까지 종료되지 않습니다.

보다매뉴얼 페이지더 많은 정보를 알고 싶습니다.

답변2

두 번째 프로세스를 분리하려면 다음과 같이 그룹화해야 합니다.

$ ( nc -lkU ~/.assistantfifo | assistant -enableRemoteControl ) &

그렇지 않으면 작동하지 않습니다. 이 두 프로세스를 분리하려면 중괄호가 필요합니다.

관련 정보