zoukankan      html  css  js  c++  java
  • stdout 与 stderr 区别

    stdout 与 stderr 区别

    • stdout 主要处理使用者输出

    • stderr 主要处理错误信息输出

    • 在默认情况下,stdout是行缓冲的,输出会放在一个buffer里面,只有到换行的时候才会输出到屏幕;

      而stderr是无缓冲的,会直接输出。

    • stdout 可以将输出重定向到某个文件上;

      stderr 不能将输出重定向,只能输出到控制台中。

    重定向问题

    #include <stdio.h>
    
    int main() {
        fprintf(stdout, "from stdout
    ");
        fprintf(stderr, "from stderr
    ");
        return 0;
    }
    

    执行命令 gcc test.c -o test 编译生成 test.exe 文件后,执行命令行 test.exe > out.txt ,此时,控制台输出 from stderr , out.txt 文件中的内容为 from stdout

    缓冲问题

    #include <stdio.h>
    
    int main() {
        fprintf(stdout, "from stdout ");
        fprintf(stderr, "from stderr ");
        puts("");
        return 0;
    }
    

    执行命令 gcc test.c -o test 编译生成 test.exe 文件后,执行命令行 ./test ,此时控制台输出 from stderr from stdout

    若将上述代码 (4、5) 行修改为如下:

        fprintf(stdout, "from stdout
    ");
        fprintf(stderr, "from stderr
    ");
    

    则控制台输出为

    from stdout
    from stderr

  • 相关阅读:
    CTF中特别小的EXE是怎么生成的
    递归和动态规划裸题分析
    三次样条插值拟合函数,预测下明后天的疫情
    存储器总结。2019.12.26
    存储器
    江科大计算方法实验
    海明码一篇文章彻底搞懂
    江科大数据库实验
    大数据是什么
    B站自动刷弹幕
  • 原文地址:https://www.cnblogs.com/acerkoo/p/12512401.html
Copyright © 2011-2022 走看看