我用C语言实现了shell,在实现重定向操作时,我看到输出重定向运行良好,但是输入重定向操作没有做任何事情。(stdout中没有显示)
COMMAND-> wc < out.txt
Child 12878 died 0x008B
COMMAND->其中COMMAND->是我的提示符
当我打印子进程死亡时的状态时,它得到的值是0x8B。这是否意味着什么?
我关注了这篇文章,重定向实现的核心部分类似于这里的建议。Implementing shell in C and need help handling input/output redirection
这是输入重定向中发生的事情的要点:
in = open(file_name, O_RDONLY);
dup2(in,0);
close(in);
execvp("wc",args);(我不能发布我的全部代码,因为这是一个实时的家庭作业,我可能最终会被MOSS抓住)
发布于 2012-11-27 09:36:53
在execvp中传递的指针是NULL,因此得到SIGSEGV。
根据管道和重定向对输入命令进行隔离的后端处理出现错误。
https://stackoverflow.com/questions/13563037
复制相似问题