在您进行 GNU 项目的工作时,无论在任何情况下都不要参考 Unix 源代码!(或者任何其他专有程序。)
如果您对 Unix 程序的内部结构有模糊的记忆,这并不绝对意味着您不能编写它的模仿版本,但是请尝试在内部以不同的方式组织模仿版本,因为这很可能使 Unix 版本的细节变得无关紧要,并使您的结果与之不同。
例如,Unix 实用程序通常经过优化以尽量减少内存使用;如果您追求速度而不是内存,您的程序将非常不同。您可以将整个输入文件保存在内存中并在那里扫描,而不是使用 stdio。使用比 Unix 程序更新发现的更智能的算法。消除临时文件的使用。用一次扫描代替两次(我们在汇编器中就是这么做的)。
或者,相反地,强调简洁而不是速度。对于某些应用程序,当今计算机的速度足以满足更简单的算法。
或者追求通用性。例如,Unix 程序通常具有静态表或固定大小的字符串,这会导致任意限制;请改用动态分配。确保您的程序可以处理输入文件中的 NUL 字符和其他奇怪的字符。添加用于可扩展性的编程语言,并使用该语言编写程序的一部分。
或者将程序的某些部分转换为可独立使用的库。或者使用简单的垃圾收集器,而不是精确跟踪何时释放内存,或者使用新的 GNU 功能,例如 obstacks。