On 06/13/2011 07:36 AM, Jim Meyering wrote:
> However, it looks like using "eval" didn't help at all.
> What does this do on that system?
>
> sh -c 'e=2; warn_ () { echo "$@" 1>&$e; }; warn_ x'
$ sh -c 'e=2; warn_ () { echo "$@" 1>&$e; }; warn_ x'
x
>
> This is what happens via tests/check.mk:
>
> printf '#!/bin/sh\ne=9; warn_ () { echo "$@" 1>&$e; }; warn_ x\n' > k
> sh -c 'exec 9>&2; /bin/sh k'
>
> Does that evoke a warning for you?
Yes:
% sh -c 'exec 9>&2; /bin/sh k'
k: 9: Generated or received a file descriptor number that is not valid.
But I think the reason that it invokes a problem is not because of the
1>&$e construct, but because HP-UX opens secondary file descriptors as
cloexec or otherwise closing them at some point, so the '/bin/sh k'
child process is not inheriting fd 9 from the parent process.
Does anyone know the HP-UX counterpart to Linux' strace in order to see
what syscalls are in use by the HP-UX shell, and why/where fd 9 is
getting closed?
>
> If so, does hard-coding the "9" help?
No.
--
Eric Blake [email protected] +1-801-349-2682
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
