对 ucspi-tcp 包中使用 tcpclient 感到困惑。
我正在使用 ubuntu ,并像这样安装 ucspi-tcp :
apt install ucspi-tcp
然后我启动了一个 tcpserver :
tcpserver localhost 10000 tee -a /tmp/test
tcpserver启动后,我尝试使用tcpclient发送消息:
tcpclient localhost 10000 echo "hello, JOJO" >&7
根据 tcpclient 的联机帮助页,我想也许我应该将输出重定向到 fd 7。
tcpclient 尝试连接到 TCP 服务器。如果成功,它将运行 prog,描述符 6 从网络读取,描述符 7 写入网络。
但是,我得到了这个:
bash: 7: Bad file descriptor
如何修改tcpclient发送消息的命令?谢谢您的回复^^
顺便提一句
如果我nc
用
clay@CVN76:~$ nc localhost 10000
hello, JOJO
hello, JOJO
文件内容测试会如预期的那样。
答案1
tcpclient
设置文件描述符当它运行时。尝试在调用的 shell 中进行重定向tcpclient
,前 tcpclient
就算跑了,当然不行。在执行此类 shell 重定向时,没有打开文件描述符 #7。
查看包中的finger@
、date@
、http@
和脚本。who@
注意他们如何将tcpclient
链加载到 a(nother) sh
,这然后执行 shell 重定向。