Re: POSIX feature or bug?

Ulrich Windl (ulrich.windl@rz.uni-regensburg.de)
Fri, 20 Sep 1996 09:25:22 +0200


On 20 Sep 96 at 9:56, Linus Torvalds wrote:

>
>
> On Fri, 20 Sep 1996, Ulrich Windl wrote:
> >
> > In 2.0.20 I tried "cd /tmp; mkdir X; cd X; rmdir /tmp/X" with
> > success. A subsequent "pwd" complains about the working directory...
>
> "Don't do that then".
>
> Actually, it's neither a bug nor a POSIX feature: it's just how things
> work. Directories are just normal files, and you can think of having a
> directory as your current working directory as having a file open.
>
> What happens when you remove a file that you had open? The open file still
> works, but you can't get at it though the filesystem name-space any more.
> Similarly, when you remove a directory that you have as you cwd, the
> directory still exists, but you can't get at it through the filesystem
> name-space.
>
> There is a special restriction here, and that's the fact that a removed
> directory cannot have new files created in it. That's simply because the
> kernel doesn't really like the idea of having a file with a non-existent
> directory as the parent..
>
> Anyway, I think most other UNIX'es will act the same way.
>
> [ sounds of logging onto other systems.. ]
>
> Solaris, HP-UX and Digital UNIX work the same way as Linux, but Solaris and
> HP-UX try to be "clever" and notice that you're trying to remove the cwd. But
> under both the "clever" OS's you can just open another window and removing
> the cwd in _another_ process, no problem (so the check seems to be just some
> silly one-liner check added by some Sun/HP/xxx engineer who though the check
> would be a good idea for some strange reason, but it has no real meaning).
>

This is from HP-UX 10.01 (Patchlevel 7+)

rkdvmhp1:windl(32) % cd /tmp
rkdvmhp1:windl(33) % mkdir X
rkdvmhp1:windl(34) % cd X
rkdvmhp1:windl(35) % rmdir /tmp/X
rmdir: /tmp/X: Cannot remove mountable directory

> Linus