On 7/24/2019 8:33 AM, Ken Brown wrote: > $ cat getpgrp_test.c > #include <unistd.h> > #include <stdio.h> > #include <errno.h> > > int > main () > { > pid_t pid = getpid (); > pid_t pgid = getpgid (0); > printf ("getpid () = %d, getpgid (0) = %d, errno = %d\n", pid, pgid, > errno); > } > > $ gcc -o getpgrp_test -Wall -g -O0 getpgrp_test.c > > $ ./getpgrp_test.exe > getpid () = 1424, getpgid (0) = 1424, errno = 0 > > $ gdb ./getpgrp_test.exe > GNU gdb (GDB) (Cygwin 8.2.1-1) 8.2.1 > [...] > (gdb) r > Starting program: > /home/kbrown/Documents/programming/misc_examples/getpgrp_test.exe > [...] > getpid () = 1427, getpgid (0) = -1, errno = 0 > [...] > [Inferior 1 (process 23872) exited normally] > > So getpgid (0) returns -1 without setting errno. I think this means that > pinfo::init() didn't fail, but for some reason myself->pgid == -1.
I just ran the above gdb session under strace and found several lines like this: 25 32828861 [main] gdb 1799 tcsetpgrp: 0 = tcsetpgrp(0, -1) I haven't looked at the gdb code, but doesn't this mean that gdb is trying to set pgrp to -1? If so, why? And shouldn't tcsetpgrp return -1 with EINVAL? Ken -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple