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
signature.asc
Description: OpenPGP digital signature