![是否可以使用 shell 命令关闭套接字?](https://linux22.com/image/524278/%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%20shell%20%E5%91%BD%E4%BB%A4%E5%85%B3%E9%97%AD%E5%A5%97%E6%8E%A5%E5%AD%97%EF%BC%9F.png)
是否可以使用某种 shell 命令/程序关闭套接字?我见过很多使用 C 和其他语言操作套接字的示例,但一直找不到专门用于此的程序。
这主要是出于好奇,而不是任何实际需要。虽然它可能对我的应用程序进行压力测试或关闭我不想打开的 tcp 套接字有用。
我主要对 Linux/Unix 感兴趣,但在 Windows 上执行此操作的方法也很好。
答案1
您可以像关闭任何其他文件一样在 sh 中关闭套接字:exec 42>&-
其中 42 是文件描述符。您不能做的(除了在少数为其提供扩展的 shell 中)是打开套接字。但这当然是在 shell 中关闭套接字,而不是在另一个进程中。
关闭正在运行的进程中的套接字会以程序作者意想不到的方式破坏其行为 — 这就像进入并修改一段内存。不过,可以通过使用调试器连接到进程并使其执行套接字关闭 API 调用(即 unix 上的 或close
系统shutdown
调用)来实现。