您的位置:软件 > 开发者网络 > 技术跟踪 > Linux开发 > 正文
编写Linux实用程序的艺术
[文章信息]
作者:Peter Seebach
时间:2005-01-06
出处:IBM
责任编辑:方舟
[文章导读]
本文考察优秀实用程序所具有的品质,以及设计这种实用程序所经历的过程……
advertisement
热点推荐
· Ava Find,让搜索更为快捷
· 微软反间谍软件初探(多图)
· VB图像处理之铅笔画算法和木雕算法
· 《电脑报2004合订本》上市
· 程序员如何接私单做SOHO一族
[正文]

上一页  1 2 3 4 5  下一页

  健壮

  实用程序的稳定性是很重要的。容易崩溃或无法处理真实数据的实用程序不是有用的实用程序。实用程序应该能够处理任意长度的行、巨型文件,等等。实用程序无法处理超过其内存容量的数据集或许是可以容忍的,但是有些实用程序不是这样;例如,sort 通过使用临时文件,一般能够对比其内存容量大得多的数据集排序。

  应该尽量确保弄清楚您的实用程序可能要操作哪些数据。不要简单地忽略无法处理的数据的可能性。应该检查这种情况并诊断您的实用程序。错误消息越明确,您对用户就越有帮助。尽量给用户提供足够的信息,以便让他们知道发生了什么情况以及如何解决。当处理数据文件时,尽量准确识别出不良的数据。当尝试解析数字时,不要简单地放弃;应该告诉用户您得到了什么数据,而且如果可能的话,还应该告诉用户该数据位于输入流中的哪一行上。

  作为一个很好的例子,请考虑 dc 的两种实现之间的区别。如果您运行 dc /home ,其中一种实现会显示“Cannot use directory as input!”而另一种实现只是无声地返回,没有错误消息,也没有不寻常的退出代码。当您错误地键入一个 cd 命令时,您更希望当前路径中有哪一种实现呢?类似地,如果您提供某个目录中的数据流(或许是执行 dc < /home),前者会给出详细的错误消息。另一方面,当它在获得无效数据的早期就选择放弃可能是理想的。

  安全漏洞经常植根于在意料之外的数据面前表现得不够健壮的程序中。务必记住,优秀的实用程序能够设法在 shell 脚本中作为根(root)用户身份运行。诸如 find 这样的程序中的缓冲区溢出可能会给大量的系统带来风险。

  程序对意料之外的数据处理得越好,它就更可能适应变化的环境。通常,设法使程序更健壮会导致您更好地理解该程序的作用,从而更好地使之通用化。

  新颖

  要编写的最糟糕的实用程序种类之一就是您已经有了的实用程序。我编写过一个名为 count 的美妙的实用程序。它允许我执行几乎任何计数任务。它是一个出色的实用程序,但是已经有一个名为 jot 的标准 BSD 实用程序做同样的事情。同样地,我的一个用于将数据转换为列的灵活的程序重复了一个现有实用程序 rs 的功能,这个实用程序同样可以在 BSD 系统上找到,只不过 rs 更灵活,设计得更好。请参阅下面的 参考资料 以了解关于 jot 和 rs 的更多信息。

  如果您即将开始编写一个实用程序,请花一点时间浏览一下各种系统,以确定那样的实用程序是否已经存在。不要害怕在 BSD 上借用 Linux 实用程序,或在 Linux 上借用 BSD 实用程序;实用程序代码的乐趣之一在于,几乎所有实用程序都具有很好的可移植性。

  不要忘了考察一下组合现有应用程序来形成一个实用程序的可能性。从理论上讲,组合现有程序来形成的实用程序运行得不足够快是可能的,但是编写一个新的实用程序很少会比等待一个稍慢的管道更快。

  一个例子实用程序

  从某种意义上,这个程序是一个可执行文件,因为对于作为过滤器来说,它决不会有任何用处。然而,它作为一个命令行实用程序却工作得非常好。

  这个程序仅做一件事情。它以近乎完美的输出格式输出 /usr/include/sys/errno.h 中的 errno 行。例如:

  $ errno 22
  EINVAL [22]: Invalid argument


上一页  1 2 3 4 5  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • Linux下C开发环境的构成和安装
  • 分析Windows和Linux动态库
  • Linux环境下的高级隐藏技术
  • Linux操作系统发展简史
  • Linux内核如何从2.4升级到2.6
  • 详解Linux 2.6内核新变化
  • Linux程序设计入门-crypt
  • Linux上搭建C/C++IDE开发环境
  • Linux下C开发环境的构成和安装
  • Linux 内核调试器内幕
  • Linux 2.6内核的精彩世界
  • 网络安全成为2005年互联网发展的关键问题
  • 一个网络的十年 记第二代中国教育科研网
  • 万方数据:IPTV市场三大瓶颈 明年发展迅速
  • 周鸿祎:中国互联网找到自信 不再仰人鼻息
  • 互联网今年过大关 网络大腕聚会论道互联网
  • IT、医疗和零售 三大行业年终红包大揭秘
  • 针对全球高管的调查显示:远程办公日益盛行
  • IT行业05年将发生震荡 面临大规模技术重组
  • Advertisement