Skip to content

fix:修复浮点交互输入示例并稳定 Windows 分卷构建 - #169

Open
xiaoshuaijie wants to merge 2 commits into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:fix-13
Open

fix:修复浮点交互输入示例并稳定 Windows 分卷构建#169
xiaoshuaijie wants to merge 2 commits into
Awesome-Embedded-Learning-Studio:mainfrom
xiaoshuaijie:fix-13

Conversation

@xiaoshuaijie

Copy link
Copy Markdown
Contributor

修复说明

本 PR 包含两项缺陷修复:

  1. 修复 float_bits 示例的运行方式。

    • 原命令通过 printf ... | ./float_bits 固定传入 -3.14,读者无法在终端中自行输入其他 float 值。
    • 改为直接运行 ./float_bits,保留程序原有的 fgetssscanf 输入校验流程。
    • 移除仅为管道输入回显而添加的 fputs(input, stdout);交互终端本身会回显用户输入,避免重复显示。
  2. 修复 Windows 下分卷并行构建时缓存复制偶发 ESRCH 的问题。

    • 原流程在各 VitePress 分卷子进程仍运行时,立即递归复制输出到缓存和最终 dist
    • 现将缓存写入和最终产物合并移至所有分卷构建完成后,按固定顺序串行执行。
    • 缓存命中时直接使用缓存目录,不再复制回临时目录。
    • Windows 上缓存复制遇到瞬态 ESRCH / ENOENT 时,最多重试 3 次,每次间隔 100ms;其他平台保持单次复制行为。

修复类型

  • 内容勘误
  • 示例代码问题
  • 构建、CI 或脚本问题

影响范围

  • documents/vol1-fundamentals/c_tutorials/13-union-enum-bitfield-typedef.md
    • 更新 float_bits 的交互式运行命令与输出行为。
  • scripts/build.ts
    • 调整分卷构建后的缓存刷新和 dist 合并时序。
    • 增加 Windows 缓存复制瞬态路径错误的有界重试。

验证方式

环境:Windows、Node.js v24.12.0、pnpm 11.18.0、MinGW GCC。

  • pnpm check:links
    • 检查通过,1205 个 Markdown 文件的链接均有效。
  • gcc -std=c17 -Wall -Wextra -Wpedantic
    • 从文档提取 float_bits 示例编译通过。
    • 使用 -3.14 输入验证,输出的 IEEE 754 binary32 位模式与文档一致。
  • BUILD_CONCURRENCY=4 pnpm build -- --force
    • 强制全量构建通过,无 ESRCH
    • 成功生成 36 个缓存条目和 4,520 个站点产物文件。
  • BUILD_CONCURRENCY=4 pnpm build
    • 缓存命中构建通过,验证缓存目录可被直接合并使用。
  • git diff --check origin/main...HEAD
    • 通过。
  • 正式教程文章已存在于导航与索引中,本次无需调整导航。

关联 Issue / Discussion

无。

@xiaoshuaijie

xiaoshuaijie commented Aug 27, 2026

Copy link
Copy Markdown
Contributor Author

Linux 不会触发重试逻辑:重试次数仅在 process.platform === 'win32' 时设为 3,Linux 仍是一次复制失败即报错。

所有平台都会采用“并行构建、串行缓存与合并”的时序。产物内容不变,VitePress 分卷仍并行;Linux 可能只是在构建末尾少量文件复制不再与其他分卷渲染交叠,通常影响很小,并且合并顺序更确定。

对 Windows,这是概率性的瞬态文件系统问题,不是每位用户都会遇到。并发数高、磁盘较忙、实时防护/同步软件介入、目录文件很多时更容易出现;无法在没有大量运行数据的情况下给出具体概率。此次修复会降低触发条件,并在仍出现短暂路径不可见时自动重试。我在执行git push时遇到了这个问题,这是ai给出的总结,老师有时间看一下

@Charliechen114514

Copy link
Copy Markdown
Member

Linux 不会触发重试逻辑:重试次数仅在 process.platform === 'win32' 时设为 3,Linux 仍是一次复制失败即报错。

所有平台都会采用“并行构建、串行缓存与合并”的时序。产物内容不变,VitePress 分卷仍并行;Linux 可能只是在构建末尾少量文件复制不再与其他分卷渲染交叠,通常影响很小,并且合并顺序更确定。

对 Windows,这是概率性的瞬态文件系统问题,不是每位用户都会遇到。并发数高、磁盘较忙、实时防护/同步软件介入、目录文件很多时更容易出现;无法在没有大量运行数据的情况下给出具体概率。此次修复会降低触发条件,并在仍出现短暂路径不可见时自动重试。我在执行git push时遇到了这个问题,这是ai给出的总结,老师有时间看一下

OKOK,我看看哈后续

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

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants