---

POSIX v. reality: A position on O_PONIES

“In the beginning, there was creat()

“Like many practical interfaces (including HTML and TCP/IP), the
POSIX file system interface was implemented first and specified
second. UNIX was written beginning in 1969; the first release of
the POSIX specification for the UNIX file I/O interface (IEEE
Standard 1003.1) was released in 1988. Before UNIX, application
access to non-volatile storage (e.g., a spinning drum) was a
decidedly application- and hardware-specific affair. Record-based
file I/O was a common paradigm, growing naturally out of punch
cards, and each kind of file was treated differently. The new
interface was designed by a few guys (Ken Thompson, Dennis Ritchie,
et alia) screwing around with their new machine, writing an
operating system that would make it easier to, well, write more
operating systems.

“As we know now, the new I/O interface was a hit. It turned out
to be a portable, versatile, simple paradigm that made modular
software development much easier. It was by no means perfect, of
course: a number of warts revealed themselves over time, not all of
which were removed before the interface was codified into the POSIX
specification. One example is directory hard links, which permit
the creation of a directory cycle – a directory that is a
descendant of itself – and its subsequent detachment from the file
system hierarchy, resulting in allocated but inaccessible
directories and files. Recording the time of the last access time –
atime – turns every read into a tiny write. And don’t forget the
apocryphal quote from Ken Thompson when asked if he’d do anything
differently if he were designing UNIX today: “If I had to do it
over again? Hmm… I guess I’d spell ‘creat’ with an ‘e'”. (That’s
the creat() system call to create a new file.) But overall, the
UNIX file system interface is a huge success.”

Complete Story

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends, & analysis