易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux源码中的mktime算法解析

  我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒是分开存储的。
    那么,要把它转化为系统便于处理的time_t类型,就需要算法进行转换。
    我们都知道我们的公历还是比较复杂的,有大月小月,有闰年非闰年,处理起来会很麻烦。
    但是Linux的源代码仅仅用了短短的几行就完成了这个复杂的转换(Gauss算法),实在令人惊奇。话不多说,先看源代码:
include/linux/time.h

static
inline
unsigned
long
mktime
(
unsigned
int
year,
unsigned
int
mon,
    unsigned
int
day,
unsigned
int
hour,
    unsigned
int
min
,
unsigned
int
sec)
       {
    if
(
0 >
=
(
int
)
(
mon -
=
2)
)
{
/**/
/* 1..12 -> 11,12,1..10 */
         mon +
=
12;
/**/
/* Puts Feb last since it has leap day */
         year -
=
1;
    }
    return
(
(
(
             (
unsigned
long
)
(
year/
4 -
year/
100 +
year/
400 +
367*
mon/
12 +
day)
+
             year*
365 -
719499
          )
*
24 +
hour /**/
/* now have hours */
       )
*
60 +
min
/**/
/* now have minutes */
    )
*
60 +
sec;
/**/
/* finally seconds */
}
看上去令人眼花缭乱,毫无头绪。下面就让我们对该算法作具体的分析。
    先不看前面的,直接看return那句,该式整体上具有这样的结构:
        T = ((X * 24 + hour) * 60 + min) * 60 + sec
    这说明该算法是先算出从1970年1月1日开始的天数X,再进而求出具体的时间值T的。
 


相关文档:

Linux core文件设置

在一个程序崩溃时,默认情况下是不产生core文件。
下面的命令可以检查生成core文件的选项是否打开:
$ulimit -a该命令将显示所有的用户定制,其中选项-a代表“all”。
$ulimit -c unlimited来让特定的用户可以产生core文件
core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。如果您根本就不想 ......

linux sock_raw原始套接字编程

from:http://blog.chinaunix.net/u2/62281/showart_1096746.html
sock_raw原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对与监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket
 
1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包
2.socket(PF_PACK ......

让Solaris和Linux一样多彩


在Solaris上面工作有几个不方便地方:
一个是ls不能按照文件类型显示颜色;
另一个是VI也不能显现语法色彩;
这里就来说明如何解决这两个问题:
其实这两个问题都是Solaris自身所带的ls和vi版本的问题;
所以解决办法就是下载最新的ls和vim源文件包重新编译进行安装,看上去好像挺麻烦,其实就几步,很简单的:
最新的ls是在 ......

轻型Linux大放光彩






<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
         
Linux
世界很精彩,令人眼花缭乱。近期以来,各种轻型
Linux
版本不断登台亮相,知名的
Puppy
(小狗之名)便是一例。何故?
 
     ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号