在Unix的V7 ed(1)
源代码是只需几个注释,其中之一是该高度启发头注释原始的1762行的C程序:
/*
* Editor
*/
鉴于源代码本身不提供任何依据,您只能从该程序的作者处获取它。
ed
最初是由Ken Thompson在PDP-11汇编中编写的,但实际上您需要与将其移植到C的人进行交流。这可能是Dennis Ritchie,因为他为Unix创建了C,并且是许多使用C来完成C的人之一。使Unix可移植到非PDP机器上。不过,里奇博士已不再回答这些问题。
我对代码的阅读表明,这样做是为了尝试保留已编辑文档的核内副本的内容。您会注意到其他文本编辑器也不会消失Ctrl-C。
下面是ed
做的Ctrl-C:
onintr()
{
signal(SIGINT, onintr);
putchr('\n');
lastc = '\n';
error(Q);
}
(是的,K& RC。我们不需要steenkin'返回类型说明符或参数声明。)
翻译成英文ed
:
重新注册信号处理程序。
(在1980年代中期,直到4.3BSD,Unix才获得自动重置信号。)
写出新行,并记住它是通过global变量完成的lastc
。
(ed.c
大约有60个全局变量。)
调用error()
函数,它著名的做多一点的打印?
,从用户的角度来看。
换句话说,这是在说:“您不是真的要这么做吗?”