Ken Thompson和Dennis里奇所著的“UNIX程序员手册”[1]是这样说的:
Commands are programs intended to be invoked directly by the user, in
contradistinction to subroutines, which are intended to be called by the
user’s programs. Commands generally reside in directory /bin (for binary
programs).
你如何决定一个程序是否应该被做成一个命令并在shell上运行,还是应该被做成一个子例程供其他程序调用?
[1][https://www.bell-labs.com/usr/dmr/www/manintro.pdf](https://www.bell-labs.com/usr/dmr/www/manintro.pdf)第二页。
1条答案
按热度按时间odopli941#
受众。它是系统管理员(开发人员有时也扮演这个角色)使用的东西,或者是帮助开发人员构建系统的API。
但它们并不是唯一的。很多时候,你可以使用与这两种软件相同的软件包。例如,OpenSSL主要是一个API,在加密事务中被业界广泛使用,但该软件包也包括可以在shell上运行的命令。XZ是一个压缩工具,你可以在命令行上运行,但它也提供了一个API,供程序调用来压缩数据。
所以你可以把你的代码打包成API和命令。这取决于你愿意花多少额外的工作来格式化和维护这两者。在某些情况下,像Armadillo这样的数学库做这两者是没有意义的--你只是不需要每天运行数学命令。