* ext/pty/pty.c (establishShell): handshaking before close slave
device. [ruby-talk:263410] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@12899 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a37d419c5d
commit
27b103f37a
@ -1,4 +1,7 @@
|
|||||||
Tue Aug 7 14:56:50 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
Tue Aug 7 14:58:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
|
||||||
|
|
||||||
|
* ext/pty/pty.c (establishShell): handshaking before close slave
|
||||||
|
device. [ruby-talk:263410]
|
||||||
|
|
||||||
* ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): constified.
|
* ext/pty/pty.c (MasterDevice, SlaveDevice, deviceNo): constified.
|
||||||
|
|
||||||
|
@ -191,7 +191,7 @@ establishShell(int argc, VALUE *argv, struct pty_info *info,
|
|||||||
{
|
{
|
||||||
int master,slave;
|
int master,slave;
|
||||||
rb_pid_t pid;
|
rb_pid_t pid;
|
||||||
char *p,*getenv();
|
char *p, tmp, *getenv();
|
||||||
struct passwd *pwent;
|
struct passwd *pwent;
|
||||||
VALUE v;
|
VALUE v;
|
||||||
struct exec_info arg;
|
struct exec_info arg;
|
||||||
@ -264,6 +264,7 @@ establishShell(int argc, VALUE *argv, struct pty_info *info,
|
|||||||
}
|
}
|
||||||
close(master);
|
close(master);
|
||||||
#endif
|
#endif
|
||||||
|
write(slave, "", 1);
|
||||||
dup2(slave,0);
|
dup2(slave,0);
|
||||||
dup2(slave,1);
|
dup2(slave,1);
|
||||||
dup2(slave,2);
|
dup2(slave,2);
|
||||||
@ -279,6 +280,7 @@ establishShell(int argc, VALUE *argv, struct pty_info *info,
|
|||||||
_exit(1);
|
_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
read(master, &tmp, 1);
|
||||||
close(slave);
|
close(slave);
|
||||||
|
|
||||||
info->child_pid = pid;
|
info->child_pid = pid;
|
||||||
@ -342,6 +344,7 @@ get_device_once(int *master, int *slave, char SlaveName[DEVICELEN], int fail)
|
|||||||
#if defined I_PUSH && !defined linux
|
#if defined I_PUSH && !defined linux
|
||||||
if(ioctl(j, I_PUSH, "ptem") != -1) {
|
if(ioctl(j, I_PUSH, "ptem") != -1) {
|
||||||
if(ioctl(j, I_PUSH, "ldterm") != -1) {
|
if(ioctl(j, I_PUSH, "ldterm") != -1) {
|
||||||
|
ioctl(j, I_PUSH, "ttcompat");
|
||||||
#endif
|
#endif
|
||||||
*master = i;
|
*master = i;
|
||||||
*slave = j;
|
*slave = j;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user