This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Bash Process Substitution

On Apr 14 08:04, Lev S Bishop wrote:
> I tried building bash from the source package, and then it uses either
> /dev/fd (if I have that as a symlink) or /proc/self/fd (if I don't),
> rather than the fifo that the binary package uses. So perhaps whoever
> built the binary package didn't have /proc/self/fd for whatever reason?

The bash package has been built before /proc/<pid>/fd came into existance.

> With my built bash.exe, process substitution seems to work for input:
> $ echo <(ls)
> /proc/self/fd/63
> $ cat <(echo hi)
> hi
> But not for output:
> $ tar -cf >(cat) syntax.c
> tar: /proc/self/fd/63: Cannot open: Permission denied
> tar: Error is not recoverable: exiting now
> I'm not sure how there can be a permissions problem or what to do about 
> it if there really is one, given that as I understand it 
> the /proc/self/fd/63 is effectively a symlink to one end of something 
> returned from pipe(2).

It's probably the wrong end.  In the Linux kernel there's some magic
going on which we can't reproduce in Cygwin so far.  Trying to open
an existing pipe for writing or reading opens apparently exactly the
right end of the pipe under Linux.  On Windows, you only get the exact
end of the pipe which is already available to the current process.  That's
the read side of the pipe, AFAICS, and that doesn't allow writing.  This
explains the "Permission denied".


Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Project Co-Leader
Red Hat, Inc.

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]