mkfifo: cannot set permissions of 'x.fifo': Not a directory
Wed Aug 9 08:01:22 GMT 2023
On Aug 8 21:38, Martin Wege via Cygwin wrote:
> On Tue, Aug 8, 2023 at 10:20 AM Corinna Vinschen
> <firstname.lastname@example.org> wrote:
> > On Aug 7 23:14, Martin Wege via Cygwin wrote:
> > > On Mon, Aug 7, 2023 at 9:14 PM Corinna Vinschen
> > > <email@example.com> wrote:
> > > >
> > > > On Aug 7 12:26, Brian Inglis via Cygwin wrote:
> > > > > On 2023-08-07 08:42, Martin Wege via Cygwin wrote:
> > > > > > We get a weird mkfifo failure in Cygwin on NTFS:
> > > > > >
> > > > > > /usr/bin/mkfifo -m 600 x.fifo
> > > > > > mkfifo: cannot set permissions of 'x.fifo': Not a directory
> > > > >
> > > > > This error is also reproducible with default fifo permissions 666 or
> > > > > anything else, and appears to be returned by gen_full_path_at() in
> > > > > syscalls.cc when called with a fifo:
> > > >
> > > > This will be fixed in 3.4.8,
> > >
> > > Thank you
> > >
> > > > see
> > > > https://cygwin.com/git/?p=newlib-cygwin.git;a=commit;h=b56b4d7fd85b
> > >
> > > First, Can I download a beta of 3.4.8, or any other version with that
> > > fix? It's pretty urgent
> > You can install a test release of Cygwin, simply by using the setup tool
> > These test releases are always created from the git main branch, though,
> > so they are always test releases of the next major version, currently
> > 3.5.0.
> Where can I download the Setup.exe tool for those test releases?
You already have it: https://cygwin.com/install.html
> > > Secondly, how are fifos, other device nodes and mknod implemented? You
> > > encode them as softlinks on ntfs?
> > Not only on NTFS. FIFOs on the disk are always created as symlinks
> > with a special target string, recognized by Cygwin. No differece on
> > NFS. Microsoft NFSv3 has no way to specify creating a "real" FIFO
> > on the remote filesystem. It wouldn't make sense anyway, because
> > there's no way to share the FIFO across systems.
> So no Windows ioctl to do a mknod?
Windows does not have provisions to store FIFOs on disk. The closest
you get in Windows are Windows named pipes, and those are stored
non-permanently in a special, temporary filesystem inside the native NT
namespace. Try this in Cygwin:
$ cd /proc/sys/Device/NamedPipe/ <-- trailing slash!
$ ls -l
FIFOs in the normal Windows filesystem are a Cygwin fake.
> What does a Linux/FreeBSD FIFO file look like, if you export that
> filesystem via NFSv3, and mount it via the native Windows NFSv3
> driver, and do a ls -l in Cygwin?
It looks like a FIFO because MSFT NFSv3 exports the stat(2) info
linux$ mkfifo blubb
cygwin$ ls -l blubb
prw-r--r-- 1 corinna vinschen 0 Aug 8 10:22 blubb
In Windows Explorer and cmd.exe its a file of size 0 with the
"System" attribute set.
In Samba it looks like an ordinary file of size 0.
More information about the Cygwin