重定向可执行文件的stdout/stderr,但不重定向shell中的调用时错误,可以通过使用重定向符号和特定的命令来实现。
在Linux和Unix系统中,可以使用重定向符号 ">" 和 "2>" 来分别重定向可执行文件的标准输出(stdout)和标准错误(stderr)。
例如,假设有一个可执行文件名为"myprogram",我们可以使用以下命令将stdout重定向到一个文件中:
./myprogram > output.txt
这将执行"myprogram"并将输出写入名为"output.txt"的文件中。
类似地,我们可以使用以下命令将stderr重定向到一个文件中:
./myprogram 2> error.txt
这将执行"myprogram"并将错误输出写入名为"error.txt"的文件中。
如果希望将stdout和stderr都重定向到同一个文件中,可以使用以下命令:
./myprogram > output.txt 2>&1
这将执行"myprogram"并将输出和错误输出都写入名为"output.txt"的文件中。
需要注意的是,上述命令只会重定向可执行文件本身的输出,而不会重定向shell中调用可执行文件时产生的错误信息。如果想要捕获并处理shell中调用时的错误信息,可以使用shell的错误处理机制,例如使用条件语句或者管道操作符。
对于重定向stdout/stderr的应用场景,常见的情况包括:
腾讯云相关产品中,可以使用云服务器(CVM)来运行可执行文件,并通过日志服务CLS来收集和分析程序的输出信息。具体产品介绍和链接如下:
领取专属 10元无门槛券
手把手带您无忧上云