鸡计划中的缓冲I/O?

ith*_*isa 5 scheme racket chicken-scheme

Racket具有很好的read-bytes-async!功能,我认为它存在于世界上所有其他编程语言中.它可以将输入流中的内容(无阻塞)读入缓冲区,返回写入的字节数.

所述函数似乎是有效实现Unix cat工具的绝对必要功能,但Chicken Scheme似乎缺乏任何此类功能.当然,我可以使用(read-byte)(write-byte),但这很慢并且占用了我所有的CPU.

甚至(copy-port)似乎没有任何这样的实施.相反,在关闭流之前,仅在缓冲区填充时才逐个缓冲地复制数据.这意味着它(copy-port (current-input-port) (current-output-port))根本不像cat.

我只是在阅读文档时遇到了一个可怕的盲点,或者鸡真的缺乏这样的功能吗?所以cat甚至不能有效地写在鸡肉?

ith*_*isa 5

我解决了我的问题.该posix库具有file-read执行我想要的功能,尽管是在文件描述符上.幸运的是,Chicken中的端口只是文件描述符周围的薄包装器; 库中也有一个端口到文件描述符转换器posix.

有趣的是,这些功能也适用于Windows.posix似乎不仅限于POSIX系统.