【问题标题】:Recommended books for building a shell/BBS Server [closed]构建 shell/BBS 服务器的推荐书籍 [关闭]
【发布时间】:2011-06-21 05:45:10
【问题描述】:

我正在为学校开展一个独立项目,我需要一些关于可能资源的指导。基本上,我正在尝试用 C 或 C++ 构建一个 Unix 风格的 shell(可能稍后移植到 Windows)。我将以模块化的方式添加 shell 命令,并随时添加功能。最后一步是添加一个“连接”命令,允许用户连接到我设计的 telnet BBS。 BBS 也将仅具有基本的骨架功能。例如,我可能会有新闻宣传,可能是一个基本的应用程序和一个基本的门游戏。

我真的不需要编程方面的帮助(至少现在还不需要),但我一直无法找到好的资源来帮助我。我要找的是一本关于 shell 编程的好书(不是写脚本,而是从头开始编写一个 shell,以及它与底层系统的各种交互),以及一本关于添加 telnet 功能的好书——我的意思是我想将我的计算机用作服务器,并允许其他一些用户连接以测试我的系统是否正常工作。我目前正在阅读 Sans“在 24 小时内自学 TCP/IP”,事实证明这对于对 CS、算法、数据结构等有很好理解的人来说相当有用。我只是需要一些更具体的东西。

只有一点背景——我是普渡大学计算机科学专业的二年级学生,我正在进行这项独立研究,以便将我迄今为止学到的许多概念联系起来。如果有人能指出我一些真正优秀的资源,将不胜感激。

如果您需要更多详细信息或说明,请告诉我,以便为我指明合适的资源。请注意,如果证明是有价值的资源,我愿意购买任何可用的书籍。此外,我确实尝试在 SO 上搜索这些资源,但大多数问题似乎过于具体(通常是关于某人在实现 shell 时遇到的问题等);我也更喜欢该领域有经验的程序员的个人建议。

提前致谢。 -S

PS- 为年轻程序员澄清“BBS”​​- 这是互联网之前存在的东西。在 2400 波特调制解调器上的老式、拨号、基于文本的公告板系统。我显然无法准确地重新创建它,但我希望使用 telnet 或 SSH 来综合体验。有关 telnet BBS 的更多信息,请参阅http://www.telnetbbsguide.com/。不过,我需要能够编写自己的软件,它只具有真正 BBS 的一小部分功能。但是,我不确定我需要搜索什么来了解更多关于这方面的信息——我应该查看服务器书籍、网络书籍还是完全其他的东西?

PPS- 更多说明。我在 BBS 上看到的大多数书籍都是关于如何使用预先存在的软件设置、运行和维护 BBS 作为管理员的书籍。我需要做的是自己编写软件。我可能会使用 telnet,因为使用 SSH 似乎更容易(至少,编程 - 如果我对此有误,请纠正我)。我的朋友建议我买一本关于模式的书,还有一本《实用程序员》。如果他为我想要构建的东西指明了正确的方向,请告诉我。另外,顺便说一句,我确实对编程、算法和数据结构有相当不错的(如果是基本的)知识——但绝对不了解网络或服务器,我不确定我实际上需要了解多少为了开始这个项目的开发。好吧,我对网络有点了解,只是不是从程序员的角度来看的。再次感谢大家。

【问题讨论】:

    标签: c bash shell networking


    【解决方案1】:

    有一本关于 unix shell 编程的书!由 Axel Tobias-Schreiner 撰写,ooc.pdf 的杰出作者,“面向对象的 C” PDF(Google it,但不要忘记他的名字!)。

    它被称为 “将 C 与 Curses、Lex 和 Yacc 一起使用:为 Unix System V 构建窗口外壳”Prentice Hall,1990;它真的应该被认为是从 K&R “C 编程语言” 开始,并在 K&P 的后半部分继续的传奇的第 3 部分“UNIX 编程环境”

    本书描述的 shell 是一个流氓风格的“窗口系统”,可以在终端内运行(使用 curses),它包括一个文本文件查看器和一个在这些“窗口”内运行命令的命令语言解释器.命令语言使用 lex 和 yacc 来实现词法分析器/解析器。因此,这本书是做这些事情的介绍,一个大型的 C 语言程序,以及 sn-ps 的金矿,用于使用诅咒、复杂的选项处理以及使用广受吹捧的标准 unix 工具实现编程语言。

    【讨论】:

      【解决方案2】:

      我从来没有看过一本关于 shell 编程的书,虽然我很高兴发现有这样的东西存在。

      但实际上,编写一个shell 基本上不是一个list of features,您将实现和评估顺序如何解释用户输入?您可以在“经典 Shell 编程”、Robbins 和 Beebe 以及“C Shell 领域指南”(安德森一家)以及可能的其他人中看到关于评估顺序的好文章。

      当然,通过深入研究 shell、bash、z shell、ksh 的可用源代码,您会学到很多东西。

      抱歉,我对您问题的 BBS 服务器部分没有任何想法。由于您发现 SAMS 的书很有帮助,我建议您查看 W. Richard Stevens' Network Programming Series of books,这是 99% 的 Unix 网络编程,可能不是您想要的。

      (最后,考虑将您的推荐标签更改为 bash 或 zsh,因为 S.O. 的许多常规贡献者通过搜索“他们的”标签来检查新问题。可以更好地回答您问题的人可能不会阅读它)

      我希望这会有所帮助。

      【讨论】:

      • 我只能想到 BSS 首字母缩写词的一个含义 ;) (winkwink) +1 写得很好
      • argv!得到我! ;-> 你的 +1 意义重大。谢谢! (现在在文本中更正)。
      • Shelter-感谢您的回复。我对 BBS 的含义进行了更多说明,因为自 80 年代末/90 年代初以来人们并没有真正使用过这些。也许你可以提出另一个建议——我对 C 有点熟悉,但我知道我需要学习 C++——所以问题就变成了,我应该用 C 还是用 C++ 编写这个?再次感谢。 -S
      • @SD_Catt : 1 更改您的标签,让更多人看到您的帖子! 2 在 S.O. 上看这里对于 C 与 C++,我只真正了解 C。 3. 现在我想,可能有一些早期的公共领域 bbs 系统,甚至可能有一两本书来描述它们。在哪里可以找到它们?试试当地图书馆,他们不会把旧东西扔出去。搜索“BBS 系统”我刚刚在亚马逊amazon.com/Running-Perfect-Bbs-Book-Disk/dp/1565299191/… 上找到了这个。我确定我见过其他人。祝你好运。
      • @shelter- 再次感谢。我想我有标签,它们现在应该更广泛,但仍然相关。您找到的这本书也是我一直在寻找的书籍类型——通常是关于将 BBS 作为管理员运行,而不是从头开始为 BBS 编程软件。我添加了更多说明 - 所以我想现在的问题是 - 我实际上需要了解多少网络和服务器才能构建它?
      猜你喜欢
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 2011-01-10
      • 2010-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多