Stages of POSIX enlightenment:
- It couldn’t possibly all be files
- It’s all files
- What is a file, anyway?
- There’s no such thing as a file
- It couldn’t possibly all be files
- Everything is a file
Most people stop at stage 2, stage 3 hits when you decide to write a filesystem, stage 4 when you’ve finished your first filesystem. Stage 5 is when you start working on kernel internals. No one can tell you how to reach stage 6, you must discover it for yourself.
You’ll know you’ve reached stage 6 when you seriously start considering running Plan 9 as a daily driver
/dev/nullsez nothing is also a fileAsking for a friend.
If you can recognize “nothing” then “nothing” must be something right? So if nothing is a file, because /dev/null says so, then nothing MUST be something to be a file. And therefore /dev/null can’t be nothing.
Or do I just need more tea? Or maybe whisk(e)y?
The word “nothing” isn’t itself nothing. It is something used to describe nothing.
in fact that gets used in abstract mathematics to first introduce the natural numbers. the empty set (nothing) (which you define as 0) is not itself nothing, so you can define the set that contains just the empty set, which now is not empty itself, but contains one element, so you define that as 1 …
The word “nothing” is the English word describing the concept of nothing. And I have to use the word to describe the concept. So yes, you are correct the word is itself “something”. So that is probably one point for “nothing” to not exist.
I have now consumed 3 cups of tea. And my head now hurts from thinking about nothing. I should never have stepped into this post.
it’s just a sentinel value. You ve reached the end. gimme back the length
Am I a file?
In the end, we are all files. We have our read()s and write()s, in in our time we play many offsets.
Unfortunately, no one can be told what a file is. You have to see it for yourself.
This is your last chance. After this, there is no turning back. You take the blue pill - the story ends, you wake up in your bed and believe whatever you want to believe. You take the red pill - you stay in Wonderland and I show you how deep the file system goes.
I feel like it’s more of a “If I tried to tell you what this was, you wouldn’t believe me” than a “I am physically incapable of explaining the idea that you’re plugged into a computer”.
ok then how do i access
[2b00:13c0:47:1422::5]:7236through a file?i don’t think that’s possible
only on plan9
echo hello > /dev/tcp/2b00:13c0:47:1422::5/7236
Yep, takes a moment to wrap your head around but the longer you read linux/unix documentation, the more it makes sense why it is the case.
tldr: it’s to have nicer, less complicated I/O operations
it enables just having two API calls: read() and write() to do everything









