如何在exec期间处理C shell程序中的输入

时间:2010-06-08 18:24:40

标签: c unix exec fork

我目前正在编写自己的shell程序。这个简单的shell只能执行命令。

执行需要从终端输入的vi或calc等命令时,命令将被执行并等待用户输入。但是我无法在屏幕上给出任何输入。

如何在fork和exec期间处理输入。

以下是执行命令的代码:

    if((pid = fork()) < 0)
    {
            perror("Fork failed");
            exit(errno);
    }
    if(pid == 0)
    {
            // Child process
            if(execvp(arguments[0], arguments) == -1)
            {
                    child_status = errno;
                    switch(child_status)
                    {
                            case ENOENT:
                                    printf(" command not found \n");
                                    break;
                    }
                    exit(errno);
            }
    }
    else
    {
            // parent process
            int wait_stat;
            if(waitpid(pid , &wait_stat, WNOHANG) == -1)
            {
                    printf(" waitpid failed \n");
                    return;
            }
    }

} 〜

谢谢,

1 个答案:

答案 0 :(得分:3)

WNOHANG导致父进程不等待,因此(取决于平台)子进程将从终端IO分离或死亡。

删除WNOHANG