NC가 실수로 막혔어요

NC가 실수로 막혔어요

내가 기대하는 것은 이것이다:

nc -l localhost 7000 </dev/null &
nc localhost 7000 </etc/profile

nc -l localhost 7000 </etc/profile &
nc localhost 7000 </dev/null

인쇄 후에는 완료되지만 /etc/profile 두 명령 그룹 모두 중단됩니다(첫 번째 경우에는 두 프로세스가 모두 진행되고, 두 번째 경우에는 서버가 완료되지만 클라이언트는 완료되지 않습니다).

명령이 완료되지 않은 이유는 무엇입니까?

nc이것은 my/Linux(4.15)의 버그입니까? MacOS와 Cygwin에서 시도했지만 Linux 명령만 완료되지 않았습니다.

답변1

저는 gnu-netcat 대신 netcat을 사용하고 있습니다. 어떤 버전을 사용하고 있는지는 잘 모르겠지만 gnu-netcat인 경우 옵션이 다를 수 있습니다.

나는 -q선택권이 있습니다:

-q secondsEOF를 감지한 후 지정된 시간(초) 동안 기다린 후 종료합니다.

그렇다면 다음과 같이 하세요.

$ nc -l localhost -p 7000 -q 0 < /etc/passwd

다음은:

$ nc localhost 7000

/etc/passwd그런 다음 두 번째 터미널에서 콘텐츠를 가져오면 두 인스턴스가 모두 nc종료됩니다.

관련 정보