小智 58

这是一个创建文件的 Unix 系统调用:在 Unix shell 提示符下,键入man 2 creat以了解更多信息。

这些天也可以在线访问手册页:

  • BTW,他终于做到了:https://github.com/golang/go/commit/c90d392ce3d3203e0c32b3f98d1e68c4c2b4c49b (28认同)

小智 35

不仅他指的是man 2 creat系统调用。他还提到了在可能的情况下保存每个小字符的过时趋势,有时这只会令人困惑,尤其是现在,当输入和存储另一个字符很少成为障碍时。

  • 我认为在问题的上下文中,他只是指 creat()。他的意思是,除了在创建文件的系统调用中出现的这个小的拼写错误之外,他不会对 Unix 做任何不同的事情。 (17认同)
  • @jmucchiello,这不是拼写错误。这是一个有意的(尽管是非标准的)缩写。一般来说,它适合大量使用缩写,如`fcntl`、`ls`、`mv`等。 (17认同)
  • 同意,但即使我们有 TB 可以存储,我也喜欢这些 abbrvtns :) (8认同)
  • 电传键很难按下。保存几个字母是有益的。首先可以消除的是元音和多余的辅音。 (2认同)

dot*_*hen 26

我回答晚了六年,但我相信现存的答案都没有抓住汤普森引述的要点。

我会用“e”拼写 creat。

Ken Thompson 并没有对用于打开和可能创建文件的函数的名称感到遗憾。相反,他表示 Unix 做得很好,即没有什么重大的事情应该做不同的事情。

微妙的一点是,Unix的结构是合理的,而实现的罚款。人们需要在自行车棚中找到任何可以在 Unix 中改进的东西。因此,对常见系统调用名称的明显挑剔。

  • 是的,他想告诉我们,UNIX 架构可以在非常小的方面进行改进。但基本上 UNIX 已经做到了。顺便提一句。`creat` 是一个系统调用,而不是 CLI 命令。 (3认同)

小智 25

它指的是用于创建新文件的 UNIX 系统调用。某些机器上的链接器仅限于最多 6 个字符的标识符。显然,Ken 必须使用这样的链接器,因此create系统调用被缩短为creat以匹配此限制。具有讽刺意味的是,create也是如此。

另请参阅:第九条诫命是什么意思?

  • 6 个字符的限制转换为 5 个字符,因为编译器(为了避免用户符号与编译器生成的符号发生冲突)在用户变量/函数名称之前添加了一个“_”,并且在以下情况下注意不要使用“_”生成符号。 (15认同)
  • @vonbrand:这似乎并不能解释 `unlink` 或 `umount` 是如何存在的,但是,我认为这与 `creat` 是同时代的。 (3认同)
  • @Dolda2000嗯,链接器很可能有这个限制,而编译器没有。因此,“umount”会与“umoun”或“umounx”或其他名称冲突,但该名称是允许的。但这纯粹是猜测:) (2认同)