you are viewing a single comment's thread
view the rest of the comments
[–] 119 points 1 month ago* (last edited 1 month ago) (30 children)

Stages of POSIX enlightenment:

  1. It couldn't possibly all be files
  2. It's all files
  3. What is a file, anyway?
  4. There's no such thing as a file
  5. It couldn't possibly all be files
  6. 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.

  • source
  • hideshow 30 child comments
  • [–] 54 points 1 month ago* (last edited 1 month ago) (7 children)

    /dev/null sez nothing is also a file

  • source
  • parent
  • hideshow 7 child comments
  • [–] 9 points 1 month ago (5 children)

    Asking 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?

  • source
  • parent
  • hideshow 5 child comments
  • [–] 11 points 1 month ago (4 children)

    The word "nothing" isn't itself nothing. It is something used to describe nothing.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 11 points 1 month ago (3 children)

    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.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 3 points 1 month ago (2 children)

    it's just a sentinel value. You ve reached the end. gimme back the length

  • source
  • parent
  • hideshow 2 child comments
  • [–] 24 points 1 month ago (3 children)

    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.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 10 points 1 month ago (3 children)
  • [–] 6 points 1 month ago (2 children)

    Okay, but what are blocks then? A file is really just a bunch of blocked stacked together with the inode metadata also sitting on another block, so is everything just blocks or because you can emulate a block device on a filesystem, are blocks themselves files? If that last part is true then files are infinitely recursive and my head is starting to spin.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 1 month ago

    The devnode that is used to reference the block is a file, so you come back to blocks just 'being offsets into some file'.

    Though system calls, ioctls and networking credibly get away from file semantics

  • source
  • parent
  • [–] 3 points 1 month ago (2 children)

    Missing stage 7: Not everything is a file.

    Linux is closer than other *nixes (sysctl equivalents in some platforms are not files, but they are files in Linux).

    However get very far into network and the file-like behaviors become more limited. From an application, at least you have a decent chance of having unseekable, but otherwise 'file-like' interaction with stream protocols. Then you need recvmsg/sendmsg. Then you want to deal with low level interaction with the network stack and dealing with NETLINK and such..

  • source
  • parent
  • hideshow 2 child comments