내가 기대하는 것은 이것이다:
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 seconds
EOF를 감지한 후 지정된 시간(초) 동안 기다린 후 종료합니다.
그렇다면 다음과 같이 하세요.
$ nc -l localhost -p 7000 -q 0 < /etc/passwd
다음은:
$ nc localhost 7000
/etc/passwd
그런 다음 두 번째 터미널에서 콘텐츠를 가져오면 두 인스턴스가 모두 nc
종료됩니다.