stdout和stderr重定向

stdout和stderr的重定向

C语言中对应于显示器的指针有两个:stdout和stderr。

书上说,对于前者,信息输出时总是先送入缓冲区(行间缓存),然后再输出到屏幕;而对后者,信息是不经过缓冲区直接输入到屏幕的。因此,向stdout输出的信息是可以被重定向的,输出到stderr的信息则不能被重定向。

但是我认为输出到stderr的信息也是可以被重定向的。下面举例说明:

#include <stdio.h>
int main(void)
{
    fprintf(stdout, "This is stdout\n");
    fprintf(stderr, "This is stderr\n");
    return 0;
}

(1)直接在命令行中运行程序

直接运行

(2)重定向到文件
命令:stdouterr > result.txt
直接重定向

重定向的内容

可以看到只有stdout被重定向到文件了

(3)将标准输出重定向到文件
命令:stdouterr 1> result1.txt
重定向标准输出

重定向的内容

可以看到只有stdout被重定向到文件了

(4)将标准错误重定向到文件
命令:stdouterr 2> result2.txt
重定向标准错误

重定向的内容

可以看到输出到stderr的内容也是可以被重定向到文件的

(5)将标准输出和标准错误重定向到同一文件
命令:stdouterr > result3.txt 2>&1
同时重定向

重定向的内容

标准输出和标准错误被重定向到同一文件

(6)将标准输出和标准错误重定向到不同文件
命令:stdouterr 1> result3a.txt 2> result3b.txt
这里写图片描述

这里写图片描述

标准输出和标准错误被重定向到不同文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值