On 20 October 2010 13:20, Andy Koppe wrote:
Corinna made tcgetpgrp return 0 instead of -1 in some circumstances
(see http://www.cygwin.com/ml/cygwin-patches/2009-q4/msg00045.html)
because she saw Linux doing that. ??But when I run Corinna's test on
my Linux system, I get -1 where she got 0. ??So not all Linuxes agree
on what tcgetpgrp should do.
Hmm, Corinna's test calls tcgetpgrp(master) in the parent only before
the child is forked and after it exited, so it's correct to report that
there's no foreground process.
I wonder which Linux it was that returned 0 in case of failure. I've
tried it on a recent Opensuse, an old Redhat with a 2.6.9 kernel, and
also a Debian with a 2.4 kernel, and got -1 on all of those.
Actually I'd only tried my test on all three systems, whereas I'd tried
Corinna's only on the old Redhat, where it did print -1 for failure.
On the 2.4 system it can't open /dev/ptmx, whereas on the Opensuse with
2.6.34 I do get the results Corinna reported, including 0 on the master
side of the pty when enquiring from the parent. (Process 0 is the
startup process, so I guess that makes some sense.)
To bring my ramblings to some sort of conclusion, here's a slightly
amended version of Corinna's test that checks the master side from the
parent process before, *during* and after the child process: