Skip to content

Conversation

@CYGG1123
Copy link

老师您好。
在学习为NPC搭建基础设施时,很自然地想到复用NEMU中的基础设施,于是选择性地将部分NEMU的源文件与NPC一起编译。在移植log.c的过程中,发现当日志文件没有在命令行中被指定,即log_fp被设置为stdout时,后续Log宏都会被打印两遍,此事在之前的双周分享会中亦有记载:

【可不可以优雅地复用NEMU的代码 - 任勤博 - 一生一芯双周分享会】 https://www.bilibili.com/video/BV168DHY8EtJ

原因应该是printf打印了一遍,fprintf又向指向stdoutstream打了一遍。

修复过程中,尝试了在log_write(...)的判断条件中加入:

  1. log_fp != stdout
  2. !isatty(fileno(fp))

来让log_fp指向stdout时只输出一次,均会触发段错误,具体原理暂时未知。
目前的处理方式是权宜之计,应该会有更好的解决方案。

感谢阅读。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant