【IT168 信息化】IBM的Lotus将与Ubuntu共同销售,并搭配Virtual Bridges的桌面虚拟化软件,要在办公室软件市场与微软竞争。
IBM与Canonical近日宣布,将共同搭售IBM的Lotus桌面应用软件与Canonical的Ubuntu Linux操作系统,让企业能拥有更低成本的软件费用。两家公司宣称, Lotus与Ubuntu的组合,将能比在传统Windows PC上使用Office,节省更多的软件支出。
【IT168 信息化】IBM的Lotus将与Ubuntu共同销售,并搭配Virtual Bridges的桌面虚拟化软件,要在办公室软件市场与微软竞争。
IBM与Canonical近日宣布,将共同搭售IBM的Lotus桌面应用软件与Canonical的Ubuntu Linux操作系统,让企业能拥有更低成本的软件费用。两家公司宣称, Lotus与Ubuntu的组合,将能比在传统Windows PC上使用Office,节省更多的软件支出。
System V的启动风格和bsd的启动风格不同,网上很多文章介绍这件事,但是那些文章仅仅从应用的角度来分析,这在理解上就有很大的困难,毕竟差异算什么呢?充其量仅仅算一种习惯,没有孰优孰劣的,如果让读者非得分出个所以然来,仅从应用角度来理解就不够了,最好的方法就是从源代码的角度看个究竟,几乎所有的人都知道unix和类unix系统是从init程序开始生命历程的,但是却有了System V和BSD两种风格的启动,说什么/etc/inittab,/etc/rc.d/等等的不同,让人真的很难分辨清楚这到底是怎么一回事,实际上根本没有那么复杂,执行什么脚本以及怎么执行只是它们各自init程序的约定,从这个意义上讲这些启动脚本就是一种动态语言,而init程序就是解释器,本文就分析System V和BSD的init源代码,然后试着分析它们有什么不同并试着指出它们各自的特点以及思想。
System V和BSD的启动程序都是/sbin/init,源代码都是init.c,我先分析System V的init.c文件(以下简称init)。init从main开始执行,最开始解析命令行参数,随后就进入了一个大循环,细节我就不说了,主要谈一下代码逻辑进而指出为什么启动脚本的不同:
BSD中没有运行级别的概念,一些文章上说的bsd运行级别是错误的。bsd的init进程通篇维持一个状态机,该状态机在不同状态间迁移,比如用户在shell敲入init 3(实际上这种情况不会发生,bsd不允许init第二次运行,这里仅仅通过System V的方式举个例子),那么就有可能引起状态机的迁移,再比如用户给init进程发送了一个信号,也有可能引起状态机迁移。
typedef long (*state_func_t)(void);
typedef state_func_t (*state_t)(void); //从字面上理解state_t就是一个状态机,它实质上是一个函数指针,这个函数指针在很多地方会改变,比如信号处理,比如命令行参数,比如出错…从而引起状态机的状态迁移。
#define DEFAULT_STATE runcom //默认的状态机初始状态函数就是runcom
state_t requested_transition = DEFAULT_STATE; //requested_transition是当前的状态机执行函数,全局变量,随时改变
一张双白金唱片也很可能是垃圾,但一个下载量超10万的WordPress插件就绝对不可能是垃圾了:) 本文里面,帕兰从WordPress官方插件目录中找出了11款当前下载量超过10万的WordPress插件,使用过WordPress一段时间的朋友应该都认识下面这些插件。如果不认识,那你真该补习一下了:)
1. Akismet (当前下载量: 479,372)
WordPress内置的反垃圾留言插件。
相关文章:
2. All in One SEO Pack (当前下载量: 573,566)
阅读更多 »