【问题标题】:C: Redirect output of system() to stderrC: 将 system() 的输出重定向到 stderr
【发布时间】:2014-11-28 14:12:53
【问题描述】:

C system() 调用运行程序并将运行的命令的 stdout 和 stderr 转发到调用程序的 stdout 和 stderr 流。

是否可以将 stdout 从 system() 调用中的命令重定向到调用程序的 stderr 流?

【问题讨论】:

  • 这里你需要的不是system,而是fork,然后是dup2,然后是exec之一。(假设你在Linux上工作)。

标签: c


【解决方案1】:

只需将1>&2 附加到系统调用中执行的命令:


例子:

system("ls 1>&2");

将执行ls 并将stdout (1) 重定向到stderr (2)。

【讨论】:

  • (这是有效的,因为系统不只是执行程序,它运行一个 shell 并在那里执行字符串,所以你可以使用 shell 重定向操作符。不过,这通常很危险(如果你不正确在你的命令中转义一个参数,人们可以注入操作符和恶意命令),所以你应该使用 fork/exec 代替,它可以让你提供标准输出等将去的文件描述符)
猜你喜欢
  • 2011-07-25
  • 1970-01-01
  • 2012-06-26
  • 2017-06-25
  • 2010-09-27
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 2014-07-22
相关资源
最近更新 更多