C语言简易shell的exec_cmd_pipe管道实现及重定向功能问题求助
C语言实现简易shell的管道功能与重定向功能问题
问题背景
我在开发基于C语言的简易shell时已经完成了大部分逻辑,目前遇到两处问题需要解决:
问题1:管道功能实现
需要编写void exec_cmd_pipe函数实现command1 [args1] | command2 [args2]的管道功能,要求函数逻辑如下:
- 父进程fork创建一级子进程后等待其执行完成
- 一级子进程先创建管道,创建失败则报错退出,之后再fork创建二级子进程
- 二级子进程将标准输出重定向到管道写端,执行args1对应的命令,执行失败则报错退出
- 一级子进程将标准输入重定向到管道读端,执行args2对应的命令,执行失败则报错退出
问题2:重定向功能bug
现有已实现的void exec_cmd_red_out输出重定向、void exec_cmd_red_in输入重定向函数存在bug,无法实现预期的文件重定向效果。
补充说明
我已附上完整的现有代码和预期的运行输出示例,求正确的实现代码。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

