输入端口与文件



Scheme输入端口与CFILE*或pythonfile是一样的吗?这和unix文件描述符的概念是一样的吗?如果不是,一个输入端口与其他端口有何不同(为什么它是这样称的,而不仅仅是一个"文件"(?

这是近似的,但只是近似等效的:端口是可以向其写入或从中读取其他对象的对象:字节或字符(通常(。

但这个近似值并不十分接近。您可以从中读取或写入字符而不是字节的端口是处理字符的端口。这意味着,例如,在他们能够在端口下面的TCP连接上写下一些八位字节之前,他们必须(幸运的是(使用一些标准编码将这些字符转换为八位字节。我不认为控制这种编码的机制&Scheme中指定了解码,但它必须存在。因此,港口至少有时是一件复杂的事情。

(至于为什么它们被称为"端口":好吧,C选择将通信端点称为"文件描述符",这在Unix"一切都是文件"的想法中是有意义的(尽管调用字节chars总是一个错误(。但是Scheme并不是来自Unix/C背景,所以确实没有理由这么做。考虑到我们在TCP/IP中所称的通信端点,"端口"似乎是一个很好的名称选择。(

最新更新