Syl*_*oux 9 devices tcp character-special-files
我知道/dev/tcp/<host>/<port>是由重定向中的某些 shell 专门处理的魔术路径。但根据man bash:
如果运行 bash 的操作系统提供这些特殊文件,bash 将使用它们;否则它会在内部模拟它们 [...]
在我现在使用的 Linux 机器上,/dev/tcp特殊文件不存在,因此 Bash 将模拟它。但是,实际上是否有一种类 Unix 系统确实提供了/dev/tcp与 Bash 支持的具有相同语义的特殊文件?
我认为 Bash 文档在这个主题上有些误导。查看代码,甚至回到引入网络重定向的 2.04 版,/dev/tcp其/dev/udp工作方式如下:
configure脚本会检查是否支持各种网络功能;如果是这样,如果启用了网络重定向(默认情况下是这种情况),则内置了内部网络代码;/dev/tcp并且/dev/udp(以正确的格式)在内部处理;否则,会产生警告(“/dev/(tcp|udp)/host/port not supported without networking”)并且 Bash 尝试打开系统上的给定路径;这归结为:
/dev/tcp并且/dev/udp将始终在内部处理;/dev/(tcp|udp)/host/port,则将使用 ,否则重定向很可能会失败;/dev/(tcp|udp)/host/port,则将使用它,否则重定向很可能会失败。/dev/tcp在某些系统上确实存在,但据我所知,没有一个系统支持与 Bash 相同的抽象。在 Solaris 上,/dev/tcp与该ndd工具一起使用以查询和更改网络配置。在XTI 中(如果您是成员,另请参阅Open Group),该t_open函数可用于/dev/tcp打开 TCP 连接,但它不使用基于路径的设置,有一个单独的数据结构来指定目标主机和端口(和其他参数)。
| 归档时间: |
|
| 查看次数: |
437 次 |
| 最近记录: |