我期望的是这样的:
nc -l localhost 7000 </dev/null &
nc localhost 7000 </etc/profile
和这个
nc -l localhost 7000 </etc/profile &
nc localhost 7000 </dev/null
在打印 my 后完成,/etc/profile
但两个命令组最终都陷入困境(第一种情况下两个进程;在第二种情况下,服务器完成但客户端没有)。
为什么命令没有完成?
nc
这是我的/Linux (4.15)中的错误吗?我在 MacOS 和 Cygwin 上尝试过,只有 Linux 命令没有完成。
答案1
我使用的是 netcat 而不是 gnu-netcat;我不确定您使用的是什么版本,但如果是 gnu-netcat,选项可能会有所不同。
我有一个-q
选择:
-q seconds
检测到EOF后,等待指定秒数然后退出
所以,如果我这样做:
$ nc -l localhost -p 7000 -q 0 < /etc/passwd
其次是:
$ nc localhost 7000
/etc/passwd
然后我在第二个终端上获取 的内容,并且两个实例都nc
终止。