Grr, why is it that these problems always crop up late on a Friday afternoon just when you should by rights be heading to the pub?
I'm using IPC::Open3 (indirectly, via Parallel::Jobs) to fork to a Kerberos rsh process. (Well, actually I've hacked IPC::Open3 to take '-' as the command so that it forks to a Perl child first, which then runs rsh via one of system/exec/open, it doesn't really matter which.) It all works fine, *except* when Kerberos authentication fails, since Kerberos rsh in its wonderfulness decided that it would be a good idea to suppress the normal error messages explaining why authentication failed whenever STDERR is not a tty, as checked by isatty(3). IPC::Open3 has ensured that rsh's STDERR is connected to a pipe at this point, you see. Not only that, but on failure rsh always sets exit codes to 1, rather than being vaguely sensible and having a different exit code for different types of error. So if anyone can come up with a way of distinguishing between things like 'Ticket expired' and 'Permission denied', by subverting the isatty test somehow (can you fake a tty?) or other means, I'd be really grateful to hear about it, because this is going to be whizzing around inside my head while I'm trying to get a peaceful pint. Bah. Adam