2005年02月28日

#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define ECONNRESET 104 /* Connection reset by peer */
#define ENOBUFS 105 /* No buffer space available */
-#define EAFNOSUPPORT 106
-#define EPROTOTYPE 107
-#define ENOTSOCK 108
-#define ENOPROTOOPT 109
-#define ESHUTDOWN 110
+#define EAFNOSUPPORT 106 /* Address family not supported by protocol family */
+#define EPROTOTYPE 107 /* Protocol wrong type for socket */
+#define ENOTSOCK 108 /* Socket operation on non-socket */
+#define ENOPROTOOPT 109 /* Protocol not available */
+#define ESHUTDOWN 110 /* Can’t send after socket shutdown */
#define ECONNREFUSED 111 /* Connection refused */
#define EADDRINUSE 112 /* Address already in use */
#define ECONNABORTED 113 /* Connection aborted */
-#define ENETUNREACH 114
-#define ENETDOWN 115
-#define ETIMEDOUT 116
-#define EHOSTDOWN 117
-#define EHOSTUNREACH 118
-#define EINPROGRESS 119
-#define EALREADY 120
-#define EDESTADDRREQ 121
-#define EMSGSIZE 122
-#define EPROTONOSUPPORT 123
-#define ESOCKTNOSUPPORT 124
-#define EADDRNOTAVAIL 125
+#define ENETUNREACH 114 /* Network is unreachable */
+#define ENETDOWN 115 /* Network interface is not configured */
+#define ETIMEDOUT 116 /* Connection timed out */
+#define EHOSTDOWN 117 /* Host is down */
+#define EHOSTUNREACH 118 /* Host is unreachable */
+#define EINPROGRESS 119 /* Connection already in progress */
+#define EALREADY 120 /* Socket already connected */
+#define EDESTADDRREQ 121 /* Destination address required */
+#define EMSGSIZE 122 /* Message too long */
+#define EPROTONOSUPPORT 123 /* Unknown protocol */
+#define ESOCKTNOSUPPORT 124 /* Socket type not supported */
+#define EADDRNOTAVAIL 125 /* Address not available */
#define ENETRESET 126
-#define EISCONN 127
-#define ENOTCONN 128
+#define EISCONN 127 /* Socket is already connected */
+#define ENOTCONN 128 /* Socket is not connected */
#define ETOOMANYREFS 129
#define EPROCLIM 130
#define EUSERS 131
#define EDQUOT 132
#define ESTALE 133
-#define ENOTSUP 134
+#define ENOTSUP 134 /* Not supported */
#define ENOMEDIUM 135 /* No medium (in tape drive) */
#define ENOSHARE 136 /* No such host or network path */

2005年02月26日

source:forever.h forever.cpp(from qt/examples)
the Makefile:

CC= g++
INCL= -I$(QTDIR)/include
CFLAGS= -Wall -O
LFLAGS= -L$(QTDIR)/lib -L/usr/X11R6/lib
LIBS= -lqt -lX11

all: forever

forever: forever.o forever.moc.o
$(CC) $(LFLAGS) -o $@ $^ $(LIBS)

forever.o: forever.cpp forever.h

forever.moc.cpp: forever.h
$(QTDIR)/bin/moc forever.h -o $@

clean:
rm -f forever
rm -f *.o
rm -f .moc.cpp

.SUFFIXES: .cpp

.cpp.o:
$(CC) $(CFLAGS) $(INCL) -c $< -o $@

Let’s take a look at the contents of the user-provided input files that are relevant to this minimal project. Here is the `Makefile.am’:

bin_PROGRAMS = foonly
foonly_SOURCES = main.c foo.c foo.h nly.c scanner.l parser.y
foonly_LDADD = @LEXLIB@

This `Makefile.am’ specifies that we want a program called `foonly’ to be built and installed in the `bin’ directory when make install is run. The source files that are used to build `foonly’ are the C source files `main.c’, `foo.c’, `nly.c’ and `foo.h’, the lex program in `scanner.l’ and a yacc grammar in `parser.y’. This points out a particularly nice aspect about Automake: because lex and yacc both generate intermediate C programs from their input files, Automake knows how to build such intermediate files and link them into the final executable. Finally, we must remember to link a suitable lex library, if `configure’ concludes that one is needed.

And here is the `configure.in’:

dnl Process this file with autoconf to produce a configure script.
AC_INIT(main.c)
AM_INIT_AUTOMAKE(foonly, 1.0)
AC_PROG_CC
AM_PROG_LEX
AC_PROG_YACC
AC_OUTPUT(Makefile)

This `configure.in’ invokes some mandatory Autoconf and Automake initialization macros, and then calls on some Autoconf macros from the AC_PROG family to find suitable C compiler, lex, and yacc programs. Finally, the AC_OUTPUT macro is used to cause the generated `configure’ script to output a `Makefile’—but from what? It is processed from `Makefile.in’, which Automake produces for you based on your `Makefile.am’ (see section C. Generated File Dependencies).

2005年02月23日

者:hoyt

这一章我们学习Linux的时间表示和计算函数

1.时间的表示
2.时间的测量
3.计时器的使用
——————————————————————————–

1。时间表示 在程序当中,我们经常要输出系统当前的时间,比如我们使用date命令的输出结果.这个时候我们可以使用下面两个函数

#include

time_t time(time_t *tloc);
char *ctime(const time_t *clock);

time函数返回从1970年1月1日0点以来的秒数.存储在time_t结构之中.不过这个函数的返回值对于我们来说没有什么实际意义.这个时候我们使用第二个函数将秒数转化为字符串. 这个函数的返回类型是固定的:一个可能值为. Thu Dec 7 14:58:59 2000 这个字符串的长度是固定的为26.

2。时间的测量 有时候我们要计算程序执行的时间.比如我们要对算法进行时间分析.这个时候可以使用下面这个函数.

#include

int gettimeofday(struct timeval *tv,struct timezone *tz);

strut timeval {
long tv_sec; /* 秒数 */
long tv_usec; /* 微秒数 */
};

gettimeofday将时间保存在结构tv之中.tz一般我们使用NULL来代替.

#include #include #include
void function()
{
unsigned int i,j;
double y;
for(i=0;i<1000;i++)
for(j=0;j<1000;j++)
y=sin((double)i);
}

main()
{
struct timeval tpstart,tpend;
float timeuse;

gettimeofday(&tpstart,NULL);
function();
gettimeofday(&tpend,NULL);
timeuse=1000000*(tpend.tv_sec-tpstart.tv_sec)+
tpend.tv_usec-tpstart.tv_usec;
timeuse/=1000000;
printf(“Used Time:%f\n”,timeuse);
exit(0);
}

这个程序输出函数的执行时间,我们可以使用这个来进行系统性能的测试,或者是函数算法的效率分析.在我机器上的一个输出结果是: Used Time:0.556070

3。计时器的使用 Linux操作系统为每一个进程提供了3个内部间隔计时器.
ITIMER_REAL:减少实际时间.到时的时候发出SIGALRM信号.
ITIMER_VIRTUAL:减少有效时间(进程执行的时间).产生SIGVTALRM信号.
ITIMER_PROF:减少进程的有效时间和系统时间(为进程调度用的时间).这个经常和上面一个使用用来计算系统内核时间和用户时间.产生SIGPROF信号.
具体的操作函数是:

#include
int getitimer(int which,struct itimerval *value);
int setitimer(int which,struct itimerval *newval,
struct itimerval *oldval);

struct itimerval {
struct timeval it_interval;
struct timeval it_value;
}

getitimer函数得到间隔计时器的时间值.保存在value中 setitimer函数设置间隔计时器的时间值为newval.并将旧值保存在oldval中. which表示使用三个计时器中的哪一个. itimerval结构中的it_value是减少的时间,当这个值为0的时候就发出相应的信号了. 然后设置为it_interval值.

#include
#include
#include
#include
#include

#define PROMPT “时间已经过去了两秒钟\n\a”

char *prompt=PROMPT;
unsigned int len;

void prompt_info(int signo)
{
write(STDERR_FILENO,prompt,len);
}

void init_sigaction(void)
{
struct sigaction act;
act.sa_handler=prompt_info;
act.sa_flags=0;
sigemptyset(&act.sa_mask);
sigaction(SIGPROF,&act,NULL);
}

void init_time()
{
struct itimerval value;
value.it_value.tv_sec=2;
value.it_value.tv_usec=0;
value.it_interval=value.it_value;
setitimer(ITIMER_PROF,&value,NULL);
}

int main()
{
len=strlen(prompt);
init_sigaction();
init_time();
while(1);
exit(0);
}

这个程序每执行两秒中之后会输出一个提示.

来自: http://www.linuxfans.org/nuke/modul…ewtopic&t=25521

2005年02月02日

1、常吃宵夜.会得胃癌. 因为胃得不到休息
2、一个星期只能吃四颗蛋.吃太多.对身体不好
3、.鸡屁股含有致癌物, 不要吃较好
4、饭后吃水果是错误的观念. 应是饭前吃水果
5、女生月经来时.不要喝绿茶. 反正茶类不要喝就对了.多吃可以补血的东西
6、喝豆浆时不要加鸡蛋及糖. 也不要喝太多
7、空腹时不要吃蕃茄, 最好饭后吃
8、早上醒来.先喝一杯水. 预防结石
9、睡前三小时不要吃东西. 会胖
10、少喝奶茶. 因为高热量.高油.没有营养价值可言.长期饮用.易罹患高血压.糖尿病.等
疾病
11、刚出炉的面包 不宜马上食用
12、远离充电座. 人体应远离30公分以上.切忌放在床边
13、天天喝水 八大杯
14、每天十杯水. 膀胱癌不会来
15、白天多喝水. 晚上少喝水
16、一天不要喝两杯以上的咖啡. 喝太多易导致失眠,胃痛
17、多油脂的食物少吃.因 为得花5~7小时去消化,并使脑中血液集中到肠胃.易昏
昏欲睡
18、下午五点后.大餐少少吃, 因为五点后身体不需那么多能量
19、10种吃了会快乐的食物: 深海鱼,香蕉,葡萄柚,全麦面包,菠菜,大蒜,南瓜,低
脂牛奶,鸡肉,樱桃
20、睡眠不足会变笨, 一天须八小时睡眠,有午睡习惯较不会老
21、最佳睡眠时间是在 晚上10点~清晨6点
22、每天喝酒不要超过一杯, 因为酒精会抑制制造抗体的B细胞,增加细菌感染的机会
23、服用胶囊应以冷水吞服(可以第一个吃), 睡前30分先服药.忌立即躺下
24、酸梅具防止老化作用, 青春永驻;肝火有毛病者宜多食用
25、掉发因素: 熬夜,压力,烟酒,香鸡排.麻辣锅.油腻食物.调味过重的料理
26、帮助头发生长:多 食用包心菜,蛋.豆类;少吃甜食(尤其是果糖)
27、每天一杯柠檬汁,柳橙汁. 不但可以美白还可以淡化黑斑
28、苹果是机车族、瘾君子、家庭主妇的常备良药, 一天一颗,才能让自己有个
干干净净的肺
29、抽烟又吃维他命(B胡萝卜素-A维他命的一种), 会致癌,尽早戒烟.才是最健康
的做法
30、女性不宜喝茶的五个时期: 月经来时,孕妇,临产前.生产完后,更年期
31、抽烟,关系最大的是 肺癌,唇癌,舌癌,喉癌,食道癌,也与膀胱癌有关
32、饮酒导致肝硬化 .引发肝癌
33、吃槟榔会导致口腔纤维化, 口腔癌
34、食物过于精细,缺乏纤维; 含大量脂肪,尤其是胆固醇会引发胃癌
35、食物过于粗糙, 营养不足时导致食道癌,胃癌
36、食品中的黄曲毒素. 亚硝酸类物皆具有致癌性
37、不抽烟. 拒吸二手烟
38、适量饮酒, 不拚久.不醉酒
39、减少食用 盐腌.烟熏,烧烤的食物
40、每天摄取新鲜的 蔬菜与水果
41、每天摄取富含高纤维的 五谷类及豆类
42、每天摄取均衡的饮食, 不过量
43、维持理想体重. 不过胖
44、保持规律的 生活与运动
45、保持 轻松愉快的心情
46、正确饮食习惯: 早上吃的像皇帝,中午吃的像平民,晚上吃的像乞