博客
关于我
Linux fprintf的用法
阅读量:219 次
发布时间:2019-02-28

本文共 1282 字,大约阅读时间需要 4 分钟。

一、fprintf 函数描述

fprintf函数用于格式化打印和输出数据,可将输出数据写入指定的流文件中。该函数根据格式字符串format,格式化数据并将结果输出到指定流stream中,直到遇到终止字符'\0'为止。

函数声明:

  • int fprintf(FILE* stream, const char* format, [argument])

参数说明:

  • stream:指向FILE对象的指针,表示输出数据流。
  • format:格式化字符串,可包含嵌入格式标签(如%[flags][width][.precision][length]specifier).
  • [argument]:可选的参数列表,用于替换format中的格式标签.

Linux系统提供五种标准流:

  • stdin:标准输入流(文件描述符0)
  • stdout:标准输出流(文件描述符1)
  • stderr:标准错误流(文件描述符2)
  • stdprn:标准打印机流
  • stdaux:标准串行设备流
  • stderr的优先级高于stdout,适用于输出调试信息时的高优先级输出。

    二、shell 输出重定向

    stdin、stdout和stderr并非只能来自键盘或屏幕,它们可以被重定向到磁盘文件或其他设备。常见的重定向方式包括:

  • 使用`>`符号进行输出重定向,例如:
  • $ ./run > output.log
  • 使用`>>`符号进行追加式重定向:
  • $ ./run >> output.log

    运行脚本时,正常日志会输出到指定文件中,但错误信息仍会输出到屏幕。例如:

  • 将正常日志和错误日志分别重定向到不同的文件:
  • $ ./run > output.log 2> error.log
  • 将错误日志与正常日志合并:
  • $ ./run > output.log 2>&1

    三、程序中输出重定向

    在程序中实现输出重定向可通过`freopen`函数完成。该函数用于重新打开文件流,并将指定的标准流(如stdin、stdout、stderr)指向新的文件。

    函数声明:

    • FILE* freopen(const char *filename, const char *mode, FILE* stream);

    参数说明:

    • filename:要打开的文件名。
    • mode:文件打开模式,与`fopen`函数中的模式一致。
    • stream:目标流(如stdin、stdout、stderr)

    使用示例:

    # 将stdin重定向到文件  freopen("data.in", "r", stdin);  将stdout输出到文件 freopen("data.out", "w", stdout); 将stderr重定向到日志文件 if (freopen("err.log", "w", stderr) == NULL) { fprintf(stderr, "error redirecting stderr\n"); }

    注意:在使用`freopen`后,需确保正确关闭重定向的文件,以避免资源泄漏。可使用`fclose`函数关闭重定向的文件和标准流。

    转载地址:http://xuwp.baihongyu.com/

    你可能感兴趣的文章
    PostgreSQL Point-In-Time Recovery (Incremental Backup)
    查看>>
    postgresql Streaming Replication监控与注意事项
    查看>>
    postgresql 不需要付费_使用数据传输在PostgreSQL执行 外部连接运算符
    查看>>
    postgresql 主从配置_生产环境postgresql主从环境配置
    查看>>
    postgresql 函数&存储过程 ; 递归查询
    查看>>
    PostgreSQL 分组聚合查询中 filter 子句替换 case when
    查看>>
    PostgreSQL 同步流复制锁瓶颈分析
    查看>>
    PostgreSQL 备份与还原命令 pg_dump
    查看>>
    Postgresql 外部表插件postgres_fdw的安装和使用
    查看>>
    PostgreSQL 如何从崩溃状态恢复(上)
    查看>>
    PostgreSQL 存储过程基本语法
    查看>>
    PostgreSQL 实现批量更新、删除、插入
    查看>>
    PostgreSQL 导入 .gz 备份文件
    查看>>
    PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)
    查看>>
    PostgreSQL 新增数据返回自增ID
    查看>>
    postgresql 更新多列数据
    查看>>
    PostgreSQL 服务启动后停止
    查看>>
    PostgreSQL 辟谣存在任意代码执行漏洞:消息不实
    查看>>
    PostgreSQL+PostGIS实现两坐标点之间最短路径查询算法函数(地图工具篇.12)
    查看>>
    Qt开发——简易调色板QPalette
    查看>>