freopen 未写入指定文件

2024-03-21

我正在尝试使用文件重定向 stdout 和 stderr 的输出。我正在使用 freopen,它会在正确的目录中创建文件,但该文件是空白的。当我注释掉代码以重定向 stdout 和 stderr 时 - 输出显示在控制台上。

这是代码:

freopen(stderrStr.c_str(), "a+", stderr); //where stderrStr and stdoutStr are the path/file name
freopen(stdoutStr.c_str(), "a+", stdout);

fclose(stdout); 
fclose(stderr);

我在 main 中放置了一个 printf("I WORK") ,没有它输出的抑制剂,但不会写入文件。


为了做你想做的事我用dup2(2).

Simply open(2)两个文件 fd1 和 fd2 然后使用dup2(fd1, 1)对于标准输出和dup2(fd2, 2)对于标准错误。

操作系统(libc、加载程序或内核,不确定是哪一个)在 main 入口之前设置了 3 个打开的文件描述符:

0 : stdin pipe
1 : stdout pipe
2 : stderr pipe

以及来自 dup2 的文档:

dup2(int oldfd, int newfd) 使 newfd 成为 oldfd 的副本,必要时先关闭 newfd

因此两个 dup2 调用将 1 和 2 替换为您打开的文件。所以当你的进程调用之后write(2)(系统调用所有输出例程,例如 printf 和 cout 调用)到 fd 1 或 fd 2 数据将写入您的文件而不是操作系统设置的管道

手册页注释:

手册页分为章节。符号foo(N)表示第 N 章中名为“foo”的手册页。要打开 foo(N),请输入:

$ man N foo

例如打开 write(2) 类型:

$ man 2 write
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

freopen 未写入指定文件 的相关文章

随机推荐

  • 如何解决 CoUnitialize() 上挂起的进程?

    我有一个本机 Visual C NT 服务 当服务启动时 它的线程调用CoInitialize 它将线程附加到 STA 服务线程通过 COM 接口使用 MSXML 当服务接收到SERVICE CONTROL STOP它在消息队列中发布一条消
  • 创建图像蒙版

    用户向我的应用程序提供了一张图像 应用程序需要从中制作一个遮罩 对于原始图像中的每个透明像素 蒙版都包含一个红色像素 我尝试了以下方法 Bitmap OrgImg Image FromFile FilePath Bitmap NewImg
  • 自定义添加到购物车按钮,将多个产品添加到购物车并添加数量:woocommerce

    我想创建自定义 添加到购物车 按钮 将我的 3 个产品添加到购物车 每个产品 2 个数量 为了将三个产品添加到购物车中 我已经使用了这样的方法 a class single add to cart button shop skin btn
  • 如何创建部分发票?

    我想从特定订单中为该订单中的某些选定项目创建发票 我已以编程方式成功为整个订单创建了发票 但我想创建该订单的部分发票 最后我明白了 必须挖 magento 才能得到这个 orderid order id order Mage getMode
  • 使用 asciidoctor 创建自定义 HTML

    我正在使用 CMS 来发布我的博客文章 我正在寻找一种从简单的文本文件离线创建 HTML 文章的方法 这是我通常在文章中使用的一段 HTML p We want to show how you can gather information
  • Spring Boot + 云 | Zuul代理 |集成测试

    当使用 Spring Boot 构建微服务时 可以非常轻松地编写大量且非常易读的集成测试并模拟远程服务请求MockRestServiceServer 有没有办法使用类似的方法来执行额外的集成测试ZuulProxy 我想要实现的是能够模拟远程
  • 为什么 C# 编译器在 IL 中发出额外的操作码?

    如果我有一个方法Multiply定义为 public static class Experiment public static int Multiply int a int b return a b 那么为什么编译器会发出这个IL met
  • Nativescript 错误:执行 webpack 失败,退出代码 1

    我已经在新的 iMac 运行 Big Sur 上按照说明仔细安装了 Nativescript 来自https docs nativescript org environment setup html macos ios https docs
  • 在模态页面表上呈现模态表单表

    在 iPad 上 我使用 modalPresentationStyle UIModalPresentationPageSheet 显示模式视图控制器 该视图控制器使用 modalPresentationStyle UIModalPresen
  • Angular 1.5 组件、ui-router 解析、$onChanges 生命周期挂钩

    在以下示例中 plunker https plnkr co edit ChxommnERTmaULmVRNY8 p preview ui router 状态路由到app组件有一个data对象和一个replace使用给定值用新对象替换该对象的
  • Scala specs2 模拟特征方法总是返回 Nullpointer 异常

    我有一个特征 我想在测试期间模拟并在另一个服务中使用该模拟特征 问题是 当我尝试模拟 indexDocuments 函数的返回值时 我收到 NullpointerException 测试方法 createDemand must return
  • Pandas 删除列包含 * 的行

    我试图删除此 df 中 DB Serial 列包含字符 的所有行 DB Serial 0 13058 1 13069 2 13070 3 13070 4 13044 5 13042 我在用 df df df DB Serial str co
  • 如何在 kotlin 中克隆或复制列表

    如何在 Kotlin 中复制列表 我在用着 val selectedSeries mutableListOf
  • 如何设置 raw_input 的时间限制

    在Python中 有没有一种方法可以在等待用户输入时计算时间 以便在30秒后 raw input 函数自动跳过 The 信号 警报 http docs python org library signal html highlight sig
  • 结构复杂的Git SVN克隆

    我需要将 SVN 存储库克隆到 git SVN 存储库的结构就好像它是存储库的存储库 如下所示 SVNRepo ProjectA branches tags trunk file ProjectB branches tags trunk f
  • 为 Content Delivery Web 服务配置环境数据框架时出错

    我正在为 Content Delivery Web 服务配置环境数据框架 当我在浏览器中点击我的服务 url 时 它会抛出以下错误 应用程序中的服务器错误 找不到声明处理器实现类 com tridion ambientdata proces
  • 期望整数表达式

    我想每 5 秒逐行读取我的文件 这次我只是尝试使用一行 bash 命令来执行此操作 bash 命令是 let X 1 while X lt 20 do cat XXX file head X tail 1 X X 1 sleep 5 don
  • Google Play 服务更新到版本 13 后出现错误

    我该如何解决这个错误 引起原因 java lang illegalargumentException 11 01 11 08 12 845 E AndroidRuntime 28885 引起 java lang IllegalStateEx
  • render_to_string方法中的Django自定义context_processors

    我正在构建一个发送电子邮件的函数 并且需要在电子邮件的 HTML 模板中使用 context processor 变量 但这不起作用 Example def send email plain body template name html
  • freopen 未写入指定文件

    我正在尝试使用文件重定向 stdout 和 stderr 的输出 我正在使用 freopen 它会在正确的目录中创建文件 但该文件是空白的 当我注释掉代码以重定向 stdout 和 stderr 时 输出显示在控制台上 这是代码 freop