将stderr重定向到文件并将stdout重定向到控制台

时间:2017-01-11 12:52:08

标签: c c-preprocessor stdout stderr console-redirect

dcc  -tPPCE200Z4VEN:simple -Xdialect-ansi -XO -g3 -Xsize-opt -Xsmall-data=0 -Xno-common -Xnested-interrupts -Xdebug-dwarf2 -Xdebug-local-all -Xdebug-local-cie -Xdebug-struct-all -Xforce-declarations -ee1481 -Xmacro-undefined-warn -Xlink-time-lint -W:as:,-l -Wa,-Xisa-vle -Xsmall-const=0 -Xforce-prototypes -Xpass-source -Xkeep-assembly-file -c -Xlint -Xenum-is-best -Xinline=0 -Xaddr-sconst=0x11 -Xaddr-sdata=0x11  -DDISABLE_MCAL_INTERMODULE_ASR_CHECK -DOSDIABPPC -DSC667349 -DFLASH_START -DV_SUPPRESS_EXTENDED_VERSION_CHECK -DV_USE_DUMMY_STATEMENT=STD_OFF -DEU_DISABLE_ANSILIB_CALLS -DMCAL_CER_VALIDATION -DOsAppMode=OSAPPMODEDEFAULT -DSKIP_MAGIC_NUMBER -DRTE_MICROSAR_PIM_EXPORT -DMEMIF_FAST_NVM_ACTIVATED=STD_ON -DESCLmgr_IsENABLED -DESCLmgr_CANrouting_RESvalidity=1 -DFEE_SWITCH_NOT_CONFIG_BLOCKS=STD_OFF -DFILL_NOINIT_WITH_ZERO -Dsrc -ID:\project\src -ID:\project\obj -E D:\project\src\hello.c 1> D:\project\obj\hello.i 2>&1

我正在预处理.c文件(编译器wind river mpc),然后stdout被重定向到.i文件中,而.i文件则构造了.pp文件。之后,我将stderr重定向到控制台(2>&1)。检查上面命令行末尾的重定向。

我知道这个主题有很多问题,但我正在进行正确的重定向,但错误出现在.pp文件中:

# 4 D:\project\src\hello.c", line 5: error (dcc:1573): Only Debug builds are supported

这个错误实际上来自stdout,是否会被拆分?

1 个答案:

答案 0 :(得分:3)

2>&1并不意味着“将stderr重定向到控制台”,这意味着“将stderr重定向到与stdout当前相同的位置”。如果您按其他顺序执行重定向 - 2>&1 1>hello.i而不是1>hello.i 2>&1 - 那么您将获得我认为您正在寻找的效果。

您需要一次考虑一次发生的重定向。如果您说1>hello.i 2>&1,则会发生这种情况:

  • 首先,stdout被重定向到hello.i
  • 然后stderr被重定向到stdout的当前目的地,即hello.i

但是如果你说2>&1 1>hello.i那就会发生这种情况:

  • 首先,stderr被重定向到stdout的当前目的地,即控制台。
  • 然后将stdout重定向到hello.i
相关问题