You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 02:24:03