On Fri, 20 Apr 2007, Denis Vlasenko wrote:

> Hi mc people,
>
> If you compile and run the following program
> under shell and under mc...
>
> #include <stdio.h>
> #include <unistd.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <fcntl.h>
> int main(int argc, char **argv)
> {
>        int i, numfd = open("/dev/null", O_RDONLY);
>
>        printf("pid=%d\n", getpid());
>        printf("ppid=%d\n", getppid());
>        printf("tty_pgrp=%d\n", (int)tcgetpgrp(0));
>        printf("task_pgrp=%d\n", (int)getpgrp());
>        for (i = 0; i < numfd; i++) {
>                printf("fd# %d: '%s'\n", i, ttyname(i));
>        }
>        return 0;
> }
>
> you will see the following:
>
> bash-3.2# ./z
> pid=8183
> ppid=8181
> tty_pgrp=8183    <========== child is in its own process group
> task_pgrp=8183   <==========
> fd# 0: '/dev/pts/4'
> fd# 1: '/dev/pts/4'
> fd# 2: '/dev/pts/4'
>
> bash-3.2# echo $$ ; exec mc
> 8181
>
> # ./z
> pid=8212
> ppid=8181
> tty_pgrp=8181    <========== child is in mc's process group
> task_pgrp=8181   <========== child is in mc's process group
> fd# 0: '/dev/pts/4'
> fd# 1: '/dev/pts/4'
> fd# 2: '/dev/pts/4'
> fd# 3: '/dev/tty'  <=== ??!

[...]

> Big one (actually, I think it's a bug): stray fd# opened
> to controlling terminal.

The descriptor to /dev/tty is created by S-Lang in SLang_init_tty().
Maybe it would make sense to mark it FD_CLOEXEC ?

Thanks!
_______________________________________________
Mc-devel mailing list
http://mail.gnome.org/mailman/listinfo/mc-devel

Reply via email to