Racket 有很好的read-bytes-async!
功能,我相信它存在于世界上所有其他编程语言中。它从输入流中读取它所能读取的内容,没有阻塞,进入缓冲区,返回写入的字节数。
所述功能似乎是有效实现例如 Unixcat
工具的绝对必要功能,但 Chicken Scheme 似乎缺乏任何此类功能。当然,我可以使用(read-byte)
and (write-byte)
,但这很慢并且会占用我所有的 CPU。
甚至(copy-port)
似乎没有任何这样的实现。相反,在关闭流之前,仅当缓冲区填满时,才逐个缓冲区复制数据。这意味着它(copy-port (current-input-port) (current-output-port))
的行为根本不像cat
。
我只是在阅读文档时遇到了一个可怕的盲点,还是 Chicken 令人震惊地实际上缺乏这样的功能?那么cat
在Chicken中甚至不能有效地编写?