Linux在六年的努力和360个补丁后消除了Strncpy API
Hacker News2026年6月20日 20:59
Linux 7.2最终从Linux内核中消除了strncpy API。用于复制指定数量字节的strncpy()函数早已被弃用,在经过六年的工作和数百个补丁后,Linux内核中已经没有strncpy接口的用户,因此它被彻底消除。由于NUL终止的反直观语义和行为,以及因目标的冗余零填充而导致的性能问题,strncpy函数在Linux内核中多年来一直是一个"持久的错误来源"。在过去六年中,经过约362次提交,消除了内核中strncpy代码的用户,终于在Linux 7.2的最后一刻达成目标。这次合并在周五消除了strncpy API以及最后一个每个CPU架构的strncpy实现。作为strncpy的替代,Linux内核代码应使用strscpy()进行NUL终止的目的地,使用strscpy_pad()处理带有零填充的NUL终止目的地,使用strtomem_pad()处理非NUL终止的固定宽度字段,使用memcpy_and_pad()进行带有显式填充的有限复制,或使用memcpy()进行已知长度的内存复制。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡