properly create new session/controlling terminal in forkpty
This commit is contained in:
parent
4921ce0867
commit
10d7561db5
1 changed files with 4 additions and 1 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue