stderrr上的错误导致程序崩溃

ssk

我将重定向stderr到Windows Phone运行时上的日志文件:

int stdError = 0;
FILE* pLogFile = NULL;

// Redirect stderror to a logfile
if ( ! m_logFilePath.empty( ) )
{
    // Get a duplicate file descriptor for stderror
    // This returns -1 on failure
    stdError = ::_dup( ::_fileno( stderr ) );

    if ( stdError != -1 )
    {
        // Redirect stderror to a log file so we can capture
        // ffmpeg error information
        // Ignore the return value (nothing we can do if this fails)
        ::freopen_s( &pLogFile, m_logFilePath.c_str( ), "w", stderr );
    }
}

调用时,程序间歇性崩溃fflush(stderr);当我不重定向时,stderr一切似乎都工作正常。

亚历克·蒂尔(Alec Teal)

是窗户,谁知道呢?

尝试一下,std::cerr.flush();因为我完全可以看到Windows再次做自己的事情(就像套接字不像文件一样,它们喜欢做自己的IO工作)。

使用我上面所说的内容,可以将任务放入其标准库中,而不是假定它是文件之类的东西。记住“抽象”,有意义的意思是flush是一种方法,它是一个动词,我们不在乎如何(或者在这种情况下(不想)知道),所以让我们假设一下flush做了flush应该做什么!

如果这不起作用,请发表评论,我会考虑一下。

我不使用Windows或Windows Phone(我不是世界上最幸运的24个人之一:P),但是我知道Windows上存在I / O问题(“差异”),所幸的是MinGW和共同隐藏他们来自我:)

要么

更改策略,如果我真的想回避问题(因为它不是您的代码),请创建一个名为my_error_stream之类的新类,该类扩展了std :: ostream(这样您就可以像std :: cerr那样使用它其中“是” std :: ostream)。

将静态方法放在称为get_error_stream()的方法中,或将其返回从my_error_stream派生的两个类之一的方法中,一个将权转发给std :: err,另一个将权转发给文件。

这取决于您希望代码的外观和感觉,我这样说是因为它使实现保持独立,并在类层次结构的自己“分支”之下。

它并不能真正回答您的问题,但是您的代码看起来不错,Windows很烂管道和套接字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SASS错误导致奇怪的Gulp崩溃

来自分类Dev

WeatherLib-Volley.jar错误导致应用程序崩溃

来自分类Dev

链表逻辑错误导致程序死机

来自分类Dev

当图像从核心数据保存在集合视图中时,由于内存错误导致应用程序崩溃

来自分类Dev

Mac OS X上的Valgrind错误导致printf double

来自分类Dev

引导上的LVM错误导致回退到initramfs

来自分类Dev

数组错误导致问题

来自分类Dev

ruby 2.0.0p247的分段错误导致Rails服务器崩溃

来自分类Dev

VBA-下标超出范围错误导致Excel崩溃

来自分类Dev

Google Cloud Notebook VM的-高内存机器,内存错误导致内核崩溃

来自分类Dev

由于缓存错误导致NetBSD内核崩溃-开始调试的好点是什么?

来自分类Dev

错误导致程序停止后,如何使程序重新启动?

来自分类Dev

句法?错误导致 React 应用程序在更改处理程序后重置

来自分类Dev

浮动操作按钮导致错误并导致应用程序崩溃

来自分类Dev

内核错误导致以太网驱动程序停止工作

来自分类Dev

CoqIDE负载路径错误导致反射

来自分类Dev

ajax错误导致成功的函数调用

来自分类Dev

Rubyzip错误导致日志损坏

来自分类Dev

打字稿路径导致错误导入

来自分类Dev

Gulp-错误导致任务停止

来自分类Dev

Rubyzip错误导致日志损坏

来自分类Dev

qSin和qCos错误导致

来自分类Dev

由于处理器 0 上的 L2 缓存组 6 错误导致机器检查异常,启动我的内核驱动程序 (StartService) 导致 0x124 蓝屏

来自分类Dev

* ngIf在一个元素上的错误导致* ngFor无法在另一个元素上正常工作

来自分类Dev

导致程序崩溃的结构

来自分类Dev

重载“>>”导致程序崩溃

来自分类Dev

iOS App错误及其导致应用程序崩溃

来自分类Dev

由于错误使用插槽和信号,导致程序崩溃

来自分类Dev

运行时强制关闭应用程序,LogCat 致命异常错误导致类 RecyclerView 膨胀

Related 相关文章

  1. 1

    SASS错误导致奇怪的Gulp崩溃

  2. 2

    WeatherLib-Volley.jar错误导致应用程序崩溃

  3. 3

    链表逻辑错误导致程序死机

  4. 4

    当图像从核心数据保存在集合视图中时,由于内存错误导致应用程序崩溃

  5. 5

    Mac OS X上的Valgrind错误导致printf double

  6. 6

    引导上的LVM错误导致回退到initramfs

  7. 7

    数组错误导致问题

  8. 8

    ruby 2.0.0p247的分段错误导致Rails服务器崩溃

  9. 9

    VBA-下标超出范围错误导致Excel崩溃

  10. 10

    Google Cloud Notebook VM的-高内存机器,内存错误导致内核崩溃

  11. 11

    由于缓存错误导致NetBSD内核崩溃-开始调试的好点是什么?

  12. 12

    错误导致程序停止后,如何使程序重新启动?

  13. 13

    句法?错误导致 React 应用程序在更改处理程序后重置

  14. 14

    浮动操作按钮导致错误并导致应用程序崩溃

  15. 15

    内核错误导致以太网驱动程序停止工作

  16. 16

    CoqIDE负载路径错误导致反射

  17. 17

    ajax错误导致成功的函数调用

  18. 18

    Rubyzip错误导致日志损坏

  19. 19

    打字稿路径导致错误导入

  20. 20

    Gulp-错误导致任务停止

  21. 21

    Rubyzip错误导致日志损坏

  22. 22

    qSin和qCos错误导致

  23. 23

    由于处理器 0 上的 L2 缓存组 6 错误导致机器检查异常,启动我的内核驱动程序 (StartService) 导致 0x124 蓝屏

  24. 24

    * ngIf在一个元素上的错误导致* ngFor无法在另一个元素上正常工作

  25. 25

    导致程序崩溃的结构

  26. 26

    重载“>>”导致程序崩溃

  27. 27

    iOS App错误及其导致应用程序崩溃

  28. 28

    由于错误使用插槽和信号,导致程序崩溃

  29. 29

    运行时强制关闭应用程序,LogCat 致命异常错误导致类 RecyclerView 膨胀

热门标签

归档