我目前正在编写自己的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;
}
}
} 〜
谢谢,
答案 0 :(得分:3)
WNOHANG
导致父进程不等待,因此(取决于平台)子进程将从终端IO分离或死亡。
删除WNOHANG
。