Browse Source

properly create new session/controlling terminal in forkpty

rs-1.0
Rich Felker 15 years ago
parent
commit
10d7561db5
  1. 5
      src/misc/forkpty.c

5
src/misc/forkpty.c

@ -1,5 +1,6 @@
#include <pty.h> #include <pty.h>
#include <unistd.h> #include <unistd.h>
#include <sys/ioctl.h>
int forkpty(int *m, char *name, const struct termios *tio, const struct winsize *ws) int forkpty(int *m, char *name, const struct termios *tio, const struct winsize *ws)
{ {
@ -10,10 +11,12 @@ int forkpty(int *m, char *name, const struct termios *tio, const struct winsize
pid = fork(); pid = fork();
if (!pid) { if (!pid) {
close(*m); close(*m);
setsid();
ioctl(s, TIOCSCTTY, (char *)0);
dup2(s, 0); dup2(s, 0);
dup2(s, 1); dup2(s, 1);
dup2(s, 2); dup2(s, 2);
close(s); if (s>2) close(s);
return 0; return 0;
} }
close(s); close(s);

Loading…
Cancel
Save