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   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to