在编写程序中,经常用到stdout、stderr作为输出,通常stdout用于输出程序运行正常时的信息,stderr用于输出程序出错时的信息。我们可以通过一些命令将stdout、stderr在屏幕上的输出导入到指定的文件。
1、准备工作
带有stdout、stderr输出的test.cpp
/*
** test.cpp
*/
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char *argv[])
{
cout << "This is stdout...." << endl;
cerr << "This is stderr..." << endl;
return 0;
}
用g++编译该文件:
$ g++ test.cpp -o test
执行 test ,屏幕上打印stdout、stderr的信息
This is stdout....
This is stderr...
2、导入stdout的结果到指定文件
在csh、sh下,使用”>”将stdout的结果导入到指定文件,本例中执行
./test > out.log
查看out.log,可以看到里面写有“This is stdout....”。
使用”>>”将stdout的结果追加到指定文件中,本例中执行
./test >> out.log
查看out.log,可以看到增加了一行“This is stdout....”。
3、导入stderr到指定文件
在 csh 中,用 ">" 将 stdout 导向,用 ">&" 则能将 stdout 与 stderr 一起导向。可是不能只单独把 stderr 转向。最好的方法是
(./test > out.log) >& err.log
以上的命令会开一个 subshell 执行 "./test";而这个 subshell 的 stdout 则被转向到out.log,同时这个 subshell 的 stdout 和 stderr 则都被转向到 err.log,但是因为 stdout 已经先被转向了, 所以 stderr 就会被转到 err.log 了。
如果你只是单纯的不想把 stdout 做转向,那么就用 sh 来帮你吧。
sh -c './test 2> err.log'
如果同时需要得到stdout、stderr的信息,也很简单,直接使用>&就可以了。
./test >& err.log(王朝网络 wangchao.net.cn)
分享到:
相关推荐
检查stdout或stderr是否是交互式的
python-tee Python库将stderr / stdout发送到文件安装pip install tee快速开始tee_test.py import sysfrom tee import StdoutTee , StderrTeewith StdoutTee ( "mystdout.txt" ), StderrTee ( "mystderr.txt" ): sys...
is-interactive检查stdout或stderr是否是交互式的它检查流是否为TTY,而不是哑终端,并且不在CI中运行。 这对于决定是否在交互式交互中呈现交互式UI或动画很有用。检查stdout或stderr是否是交互式的。它检查流是TTY...
oBandit是一个库,它将劫持您的Stdout和Stderr并将其替换为输出文件。 用法 package main import ( "fmt" "log" "github.com/missionMeteora/oBandit" ) func main () { b , err := bandit . New ( `output....
有时我们需要重定向stdout,stderr,stdin。比如:将输出写入文件,又或者我们要将命令行程序输出结果显示到Windows对话框中。源码示范如何在Windows中实现,封装了几个简单易用的函数。
它将命令的stdout和stderr都发送到其stdout,从而很容易通过管道传递给寻呼机或类似设备。 默认情况下, highlight-stderr将以粗体红色突出显示stderr,并保持标准输出正常。 但是,您可以使用环境变量HIGHLIGHT_...
Pipedump派生一个进程,然后执行指定的命令,充当STDIN,STDOUT和STDERR的代理。 调试数据和发送到STDIN的数据记录为从:: 1到::遍历的IPv6 UDP数据包。 从STDOUT和STDERR接收的数据记录为从::到:: 1遍历的IPv6 UDP...
本篇文章是对在c语言中stdout与stderr容易忽视的一些细节进行了详细的分析介绍,需要的朋友参考下
websocketd是一个小型命令行工具,它将包装现有的命令行界面程序,并允许通过WebSocket访问它。
允许您获取 Node 全局 process.stdout 和 process.stderr 管道并监听。 文档 API 很简单。 使用钩子库的 stderr 或 stdout 函数,只需传入一个处理函数。 可选的第二个参数是真/假,它控制数据是复制到原始目的地...
我已经编写了一个围绕 fprintf 的包装器,它输出到 stdout 并包含 stdout 和 stderr 函数。 这允许您做的是替换代码,如: fprintf(1, '我的结果是:%d', foo); 使用更清晰的代码,例如printf('我的结果是:%d', ...
的适配器,使用xdmp.log将stdout和stderr写入 MarkLogic 的日志。方法我从标签中的assert.js 、 console.js和util.js源开始。 我已尽可能少地修改以使这三个库在 MarkLogic 8.0 中运行。 大多数更改是代码期望全局...
《算法》中,使用StdOut.printf () 语句需要的algs4.jar文件 下载及配置。《算法》第四版的jar包08-02 《算法(第4版)》是Sedgewick之巨著,与高德纳TAOCP一脉相承,是算法领域经典的参考书,涵盖所有程序员必须掌握...
/usr/bin/env pythonimport syssys.stdout.write(“stdout1 “)sys.stderr.write(“stderr1 “)sys.stdout.write(“stdout2 “)sys.stderr.write(“stderr2 “)其中的sys.stdout.write也可以换成print。运行这程序,...
.read FILENAME 执行指定文件中的SQL语句 .schema ?TABLE? 打印创建数据库表的SQL语句 .separator STRING 用指定的字符串代替字段分隔符 .show 打印所有SQLite环境变量的设置 .quit 退出命令行接口
将每个命令的stdin,stdout和stderr重定向到文件或字符串。 TTY :: Command为工具包提供了独立的命令执行组件。动机复杂的软件项目不仅仅是一个应用程序。 这些项目通常会产生数十个或数百个补充的独立脚本,这些...
使用 AutoCloseable 从 Java 捕获 STDOUT 和 STDERR 概要 捕捉 import net.moznion.capture.output.stream.Capturer ; import java.io.ByteArrayOutputStream ; ByteArrayOutputStream stdout = new ...