The creat [sic] Unix System Call
ποΈ Austin Riba β π code linux c π¬ 0
The start of section 8.3 of the venerable The C Programming Language by Brain Kernighan and Dennis Ritchie reads:
Other than the default standard input, output and error, you must explicitly open files in order to read or write them. There are two system calls for this,
open
andcreat
[sic].
It is very rare to see [sic] in a text about software because typos in software can be fixed. So why here?
Many UNIX commands are 6 characters or less
If you’ve mucked around in the Linux command line at all, you’ve probably run into this. Why is ‘umount’ not spelled ‘unmount’? is a great SO question that goes into this. The TL;DR is that back in the day, there were real technical limitations on the number of characters that could be used in, for example, file names. In fact, the pdp-11 on which Ken Thomson wrote the original Unix used a character encoding called Radix 50 that could store a maximum of 6 characters in a single machine word. Whether this limitation was real when these system calls were written is unclear, but the practice of using abbreviated words probably persisted.
But wait, creat
is only 5 characters. So why drop the ‘e’?
It might actually be a typo
In the 1984 book The UNIX Programming Environment by Brian Kernighan & Rob Pike page 204 the following footnote appears:
Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: “I’d spell creat with an e.”
My pure conjecture? Ken Thompson was probably used to thinking up short
names for commands. creat
was easy - just drop the ‘e’, and he may
have not even realized that the full word create
would have been only
6 characters.
Redemption?
In 2009 Ken Thompson made this commit to the Go programming language:
spell it with an “e”
All is well that ends well βΊοΈ