是否可以使用 shell 命令关闭套接字?

Jas*_*son 6 networking linux-networking socket

是否可以使用某种 shell 命令/程序来关闭套接字?我已经看到很多使用 C 和其他语言操作套接字的例子,但一直找不到专门用于它的程序。

这主要是出于好奇,而不是任何真正的需要。尽管它可能对我的应用程序进行压力测试或关闭我不想打开的 tcp 套接字很有用。

我主要对 Linux/Unix 感兴趣,但在 Windows 上执行此操作的方法也不错。

Gil*_*il' 6

您可以像任何其他文件一样关闭 sh 中的套接字:exec 42>&-其中 42 是文件描述符。你不能做的事情(除了一些为其提供扩展的外壳)是打开一个套接字。但是当然这会关闭外壳中的套接字,而不是在另一个进程中。

在正在运行的进程中关闭套接字会以程序作者不应该期望的方式破坏其行为——就像进入并修改一块内存一样。尽管如此,它仍然可以通过使用调试器连接到进程并使其执行套接字关闭 API 调用(这将是unix 上的closeorshutdown系统调用)来完成。