构建Shell/BBS服务器的推荐书籍

5
我正在为学校做一个独立项目,需要一些关于资源的指导。基本上,我试图用C或C++构建一个类Unix的shell(可能稍后移植到Windows)。我会以模块化的方式添加shell命令,并在逐步添加功能。最后一步将是添加一个“连接”命令,允许用户连接到我设计的telnet BBS。BBS也只有基本的、骨架式的功能。例如,我可能会有新闻简报、一个基本应用程序和一个基本的门户游戏。
我不需要太多关于编程方面的帮助(至少现在还不需要),但我一直在寻找好的资源来帮助我。我想要的是一本关于shell编程的好书(不是编写脚本,而是从头开始编程一个shell,以及它与底层系统的各种交互),以及一本关于添加telnet功能的好书——我的意思是我想把我的电脑用作服务器,允许一些其他用户连接,以便测试我的系统是否正常工作。我目前正在阅读Sans的“24小时教你TCP/IP”,对于具有良好的计算机科学、算法、数据结构等理解的人来说,这已经被证明是相当有用的。我只需要更具体的东西。

简单介绍一下-我是普渡大学的二年级计算机科学专业学生,我正在进行这个独立研究,以便将我到目前为止学到的许多概念联系起来。如果有人能指向一些真正优秀的资源,那将非常感激。

如果您需要更多详细信息或澄清以指向适当的资源,请告诉我。请注意,如果它被证明是有价值的资源,我愿意购买任何可用的书籍。此外,我尝试在SO上搜索这些资源,但大多数问题似乎都太具体(通常是关于某人在他们的shell实现中遇到的问题等);我也更喜欢来自该领域有经验的程序员的个人推荐。

提前致谢。 -S

PS- 为了向年轻程序员澄清“BBS”的含义-这是互联网出现之前的东西。老派的、拨号的、基于文本的布告栏系统,使用2400波特的调制解调器。我显然无法完全重现那种体验,但我的希望是使用telnet或SSH综合体验。请参阅http://www.telnetbbsguide.com/以获取有关telnet BBS的更多信息。我需要能够编写自己的软件,它仅具有真正BBS功能的一小部分。但是,我不确定我需要搜索什么来了解更多信息-我应该查找服务器书籍、网络书籍还是完全不同的东西?

PPS- 更多澄清。我在BBS上看到的大部分书籍都是关于如何设置、运行和维护BBS系统,使用预先存在的软件。而我需要做的是编写自己的软件。我可能会使用telnet,因为它似乎比SSH更容易使用(至少从编程角度来看是这样,请纠正我如果我错了)。我的一个朋友建议我买一本关于模式的书,还有一本《实用程序员》的副本。请告诉我他是否指引我正确地构建所需的内容。另外,只是作为一个侧面的说明,我对编程、算法和数据结构有相当不错的基础知识,但完全没有网络或服务器方面的知识,也不太确定我实际上需要多少知识才能开始开发这个项目。嗯,我对网络有一点了解,只是不是从程序员的角度。再次感谢你们。

2个回答

3

有一本关于编程Unix Shell的书!作者是著名作家Axel Tobias-Schreiner,他还写过《ooc.pdf》和《面向对象的C语言》PDF(Google搜索一下,但别忘了他的名字!)。

这本书名叫“使用Curses、Lex和Yacc编写Unix System V窗口Shell”,出版社是Prentice Hall,1990年;它应该被认为是从K&R “C程序设计语言”开始的传奇故事的第3部分,继续在K&P “UNIX编程环境”的后半部分中进行。

这本书描述的Shell是一个流氓风格的“窗口系统”,它在终端内部工作(使用curses),包括一个文本文件查看器和一个命令语言解释器,可以在这些“窗口”内运行命令。命令语言使用lex和yacc实现词法/语法分析器。因此,这本书作为介绍如何做这些事情的入门书籍,是用C语言编写的大型文学程序,同时也是使用复杂选项处理和实现使用备受推崇的标准Unix工具的编程语言的代码段的宝库。


1

我从未见过关于编程Shell的书籍,尽管我很高兴发现这种东西的存在。

但实际上,编程Shell基本上就是要实现一个功能列表如何解释用户输入的执行顺序。您可以在“Classic Shell Programming”(Robbins and Beebe)、“C Shell Field Guide”(Andersons)和可能其他一些书中看到对执行顺序的详细介绍。

当然,通过深入研究可用的Shell源代码(如bash,z shell和ksh),您将会学到很多。

抱歉,我没有任何关于你问题中BBS服务器部分的想法。既然你发现SAMS书有帮助,我建议看看W. Richard Stevens' Network Programming Series of books,那是99%的Unix网络编程,也许不是你想要的。

最后,请考虑将你的“推荐标签”更改为bash或zsh,因为许多 Stack Overflow 的常规贡献者会通过搜索他们的标签来查看新问题。能够更好地回答你问题的人可能没有看到它。

希望这可以帮到你。


我只能想到BSS首字母缩写的一个意思;) (眨眼) 对于好的写作加1 - sehe
argv!搞定了!;-> 而你的+1意义重大。谢谢!(现在已在文本中更正)。 - shellter
Shelter- 感谢您的回复。我对我所说的BBS进行了更多的澄清,因为人们自80年代末/90年代初以来就没有真正使用过它们。也许您可以提出另一个建议-我对C语言有点熟悉,但我知道我需要学习C ++-所以问题变成了,我应该用C还是C ++编写这个?再次感谢。-S - SD_Catt
@SD_Catt:1. 更改您的标签以吸引更多人查看您的帖子!2. 在S.O.上查找C vs C ++,我只真正了解C。3. 现在我想起来了,可能有一些早期的公共域bbs系统,甚至可能有一两本书来描述它们。在哪里可以找到它们?尝试那些不会扔掉旧东西的当地图书馆。搜索“BBS系统”,我在亚马逊上找到了这个http://www.amazon.com/Running-Perfect-Bbs-Book-Disk/dp/1565299191/ref=sr_1_2?s=books&ie=UTF8&qid=1308681004&sr=1-2。我相信我已经看过其他类似的书籍。祝你好运。 - shellter
@shelter- 再次感谢。我认为现在标签的范围更广了,但仍然相关。你找到的书籍是我一直在找的类型 - 通常是关于作为系统管理员运行BBS而不是从头开始编写BBS软件的书籍。我添加了一些更多的说明 - 所以现在问题变成了 - 我实际上需要了解多少关于网络和服务器才能构建这个? - SD_Catt
标签更好了,@luserdroog,书也好多了!你看过http://en.wikipedia.org/wiki/List_of_BBS_software吗?祝你项目顺利。 - shellter

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接