gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:56 24 4
gpt4 key购买 nike

我目前正在编写自己的 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;
}
}

}~

谢谢,

最佳答案

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

删除 WNOHANG

关于c - 如何在 exec 期间处理 C shell 程序中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3000127/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com