outfile 2>&1"和 "2>&1 > outfile"?-6ren"> outfile 2>&1"和 "2>&1 > outfile"?-我无法理解这两种情况之间的区别: ./a.out > outfile 2>& 我可以在outfile中看到标准输出和错误输出 ./a.out 2>& > 输出文件 我只能看到标准输出 int outf-6ren">
gpt4 book ai didi

c - 我应该如何理解 "> outfile 2>&1"和 "2>&1 > outfile"?

转载 作者:IT王子 更新时间:2023-10-29 00:54:36 27 4
gpt4 key购买 nike

我无法理解这两种情况之间的区别:

  1. ./a.out > outfile 2>&

    我可以在outfile中看到标准输出和错误输出

  2. ./a.out 2>& > 输出文件

    我只能看到标准输出 int outfile,屏幕上打印错误输出

我该如何理解?我认为它们是一样的!

最佳答案

n> file 创建/截断 file 并将其关联到文件描述符 n。如果未指定 n,则假定为 1(即标准输出)。

n>&m 复制(使用 dup2() )文件描述符 mn 上。

因此,如果您编写 ./a.out 2>& >outfile,则标准输出描述符首先被复制到 stderr 描述符上,然后 stdout 被重定向到 outfile。

如果愿意,您可以将这些重定向运算符视为赋值:

  • 2>& >file 将被读取为 fd2 := fd1; fd1 := "file",与
  • 不一样
  • >file 2>&fd1 := "file"; fd2 := fd1

关于c - 我应该如何理解 "> outfile 2>&1"和 "2>&1 > outfile"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25229772/

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