我的伪终端丢失了一些字符,还有其他一些奇怪的错误?

时间:2013-03-16 08:28:22

标签: c linux terminal tty pty

我写了一个伪终端进行测试。但结果并不是我所期望的。它有一些错误,例如在指定的单词之前丢失一个字符或整个句子。我对这些错误感到困惑。这是我的代码:

static  int CreatePtyShellt()
{
    int master;
    int slave;
    char name[30];
    struct termios temp;
    struct winsize winp;
    pid_t  pid;
    if(openpty(&master,&slave,name,&temp,&winp)==-1)
    {
        return -1;
    }
    if((pid=fork())<0)
        return(-1);
    else if(pid==0)
    {
        if(setsid()<0)
            perror("setsid");
        if(tcsetattr(slave,TCSANOW,&temp)<0)
            perror("tcsetattr");
        if(ioctl(slave,TIOCSWINSZ,&winp)<0)
            perror("tcsetattr");
        if(dup2(slave,STDIN_FILENO)!=STDIN_FILENO)
            perror("stdin");
        if(dup2(slave,STDOUT_FILENO)!=STDOUT_FILENO)
            perror("stdout");
        if(dup2(slave,STDERR_FILENO)!=STDERR_FILENO)
            perror("stderr");
        if(slave!=STDIN_FILENO&&slave!=STDOUT_FILENO&&slave!=STDERR_FILENO)
            close(slave);
        execl("/bin/sh","bash","-i",(char *)0);
        exit(0);
    }
    return master;
}

它出了什么问题?

0 个答案:

没有答案