博客
关于我
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/

    你可能感兴趣的文章
    phpcms 2008 product.php pagesize参数代码注射漏洞
    查看>>
    phpcms V9 自定义添加 全局变量{DIY_PATH}方法
    查看>>
    Redis五种核心数据结构的基本使用与应用场景
    查看>>
    Redis五种数据结构简介
    查看>>
    PHPCMS多文件上传和上传数量限制
    查看>>
    phpEnv的PHP集成环境
    查看>>
    PHPExcel一些基本设置总结
    查看>>
    phpexcel中文手册
    查看>>
    PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/c...
    查看>>
    phpize及其用法
    查看>>
    phpMailer发送邮件
    查看>>
    PHPMailer发送邮件
    查看>>
    phpmailer发送邮件,可以带附件
    查看>>
    phpmailer的用法
    查看>>
    phpMQTT
    查看>>
    phpmyadmin 安装
    查看>>
    phpmyadmin导出数据库出现Fatal error: Cannot 'break' 2 levels in D:\phpstudy\WWW\phpMyAdmin
    查看>>
    phpmyadmin数据库建表及插入
    查看>>
    phpnow配置
    查看>>
    phprpc简单使用
    查看>>