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

C语言使用dup2、open、execv实现Linux标准输入重定向不生效

问题解答

根因说明

你遇到的现象和输入重定向代码逻辑无关,问题出在测试命令的固有特性上:

  • echo 命令仅输出命令行传入的参数,完全不会读取标准输入的内容。执行 /bin/echo < ./a.txt 时,你的代码已经将<对应的token设置为NULL,最终传递给execv的参数列表只有[/bin/echo, NULL],没有任何待输出的参数,自然只会输出空行。
  • sleep 命令仅从命令行参数读取等待的秒数,同样不会读取标准输入的内容,参数列表只有[/bin/sleep, NULL]时必然提示缺少参数,和重定向的a.txt文件内容无关。

验证代码正确性的方法

换用默认会读取标准输入的命令测试即可,比如执行 /bin/cat < ./a.txt,如果能正常输出a.txt的完整内容,就说明你的输入重定向逻辑完全符合预期。

内容的提问来源于stack exchange,提问作者hkcode

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:39:00