【发布时间】:2018-07-25 06:38:15
【问题描述】:
Haskell 的openFile 源码中有这个花絮:
-- we want to truncate() if this is an open in WriteMode, but only
-- if the target is a RegularFile. ftruncate() fails on special files
-- like /dev/null.
when (iomode == WriteMode && fd_type == RegularFile) $
setSize fD 0
这非常令人惊讶,我认为 IOModes 只是 O_WRONLY、O_RDONLY 和 O_RDWR 的包装。为什么会这样?如何打开一个只写而不截断的文件?
【问题讨论】:
-
是的,这就是
O_WRONLY的意思。打开用于写入的文件和打开用于附加的文件之间的区别比 Haskell 早了很多,并且定义在比任何一种编程语言的语义都低的级别。
标签: haskell