如何终止bash本身建立的TCP连接?

TJM*_*TJM 17 bash pipe file-descriptors tcp

我曾经用exec 3<>/dev/tcp/192.168.0.101/6435192.168.0.101:6435 建立 TCP 连接。我收到并发送了一些带有pipe命令的消息。

现在,我想终止 TCP 连接。但是,ss -anpet我可以看到 bash 本身拥有这种连接,而无需分叉子进程。

我试图将信号 9 和 15 发送到 bash 进程,但如您所知,bash 无法杀死自己。

那么,我可以在不终止我正在使用的 pts 的情况下终止我建立的 TCP 连接吗(既不通过 root 杀死它也不发送 Ctrl+D)?

phe*_*mer 18

该命令打开了文件描述符 3 上的连接。因此,要关闭连接,您需要关闭文件描述符 3。为此:

exec 3<&-
Run Code Online (Sandbox Code Playgroud)

  • [`shutdown` 发送 FIN,而 `close` 发送 RST。](http://stackoverflow.com/a/23483487/1340389) 这些是本质上不同的东西。 (4认同)
  • @Kevin RST 是由于关闭套接字而没有先从中读取所有数据引起的。如果你读到数据的末尾然后关闭,关闭将发送一个 FIN。 (2认同)