我在 bash(1) 手册页中注意到了这一点。是否有操作系统或某些内核模块提供此接口?在我的 Debian 安装上尝试过,这些设备不存在。
谢谢
/dev/tcp/host/port
If host is a valid hostname or Internet address, and port is an integer port number or service
name, bash attempts to open the corresponding TCP socket.
/dev/udp/host/port
If host is a valid hostname or Internet address, and port is an integer port number or service
name, bash attempts to open the corresponding UDP socket.
解决方案/答案:这是可行的,并且它是 shell 的一个功能。去测试:
$ nc -l -p 5555
echo Hello > /dev/tcp/localhost/5555
$ nc -l -p 5555
Hello
很酷。
答案1
正如杰夫所说,这是一个功能由 Bash 实现,而不是由内核。它仅适用于 shell 脚本或 shell 命令行;其他程序打不开/dev/tcp/...
。
要将其实现为内核模块,您必须提供一个新的虚拟文件系统。
要查看实际效果,您可以将 Bash 与 netcat 结合起来。跑步
nc -l -p 5555
在一个终端中,然后
echo Hello > /dev/tcp/localhost/5555
在另一个;你会在运行的终端中看到“Hello” nc
。