奥运重在参与

刚碰在U酷上看到超搞笑的视频,《奥运重在参与》,分享一下。服了~!

http://v.youku.com/v_show/id_XNTk4NzUwOA==.html

最近奥运比赛相当火,从金牌的争夺,到幕后的小故事,丰富了全民的生活。今天下午实验室景亚琴她一小学同学有个摔跤比赛,好像叫景瑞雪。

下面这个视频把人家“失误”当笑柄,不好~~

http://v.youku.com/v_show/id_XMjU0MTY3MDg=.html

exit和_exit、exit()和_exit()

作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相似到什么程度,我们可以从Linux的源码中找到答案:

#define __NR__exit __NR_exit /* 摘自文件include/asm-i386/unistd.h第334行 */

“__NR_”是在Linux的源码中为每个系统调用加上的前缀,请注意第一个exit前有2条下划线,第二个exit前只有1条下划线。

随Linux核心还提供了一些C语言函数库,这些库对系统调用进行了一些包装和扩展,因为这些库函数与系统调用的关系非常紧密,所以习惯上把这些函数也称为系统调用。#define这句只能说明内核里的两个系统调用_exit和exit相同,但其封装后对应的C库函数_exit()和exit()是不同的。

这时随便一个懂得C语言并且头脑清醒的人都会说,_exit和exit没有任何区别,但我们还要讲一下这两者之间的区别,这种区别主要体现在它们在函数库中的定义。_exit在Linux函数库中的原型是:

	#include<unistd.h>
void _exit(int status);

和exit比较一下,exit()函数定义在 stdlib.h中,而_exit()定义在unistd.h中,从名字上看,stdlib.h似乎比unistd.h高级一点,那么,它们之间到底有什 么区别呢?让我们先来看流程图,通过下图,我们会对这两个系统调用的执行过程产生一个较为直观的认识。

从 图中可以看出,_exit()函数的作用最为简单:直接使进程停止运行,清除其使用的内存空间,并销毁其在内核中的各种数据结构;exit()函数则在这 些基础上作了一些包装,在执行退出之前加了若干道工序,也是因为这个原因,有些人认为exit已经不能算是纯粹的系统调用。

exit()函数与_exit()函数最大的区别就在于exit()函数在调用exit系统调用之前要检查文件的打开情况,把文件缓冲区中的内容写回文件,就是图中的“清理I/O缓冲”一项。

在Linux 的标准函数库中,有一套称作“高级I/O”的函数,我们熟知的printf()、fopen()、fread()、fwrite()都在此列,它们也被称 作“缓冲I/O(buffered I/O)”,其特征是对应每一个打开的文件,在内存中都有一片缓冲区,每次读文件时,会多读出若干条记录,这样下次读文件时就可以直接从内存的缓冲区中读 取,每次写文件的时候,也仅仅是写入内存中的缓冲区,等满足了一定的条件(达到一定数量,或遇到特定字符,如换行符n和文件结束符EOF),再将缓冲区 中的内容一次性写入文件,这样就大大增加了文件读写的速度,但也为我们编程带来了一点点麻烦。如果有一些数据,我们认为已经写入了文件,实际上因为没有满 足特定的条件,它们还只是保存在缓冲区内,这时我们用_exit()函数直接将进程关闭,缓冲区中的数据就会丢失,反之,如果想保证数据的完整性,就一定 要使用exit()函数。

请看以下例程:

/* exit2.c */
#include<stdlib.h>
main()
{
printf("output beginn");
printf("content in buffer");
exit(0);
}

编译并运行:

$gcc exit2.c -o exit2
$./exit2
output begin
content in buffer
/* _exit1.c */
#include<unistd.h>
main()
{
printf("output beginn");
printf("content in buffer");
_exit(0);
}

编译并运行:

$gcc _exit1.c -o _exit1
$./_exit1
output begin

在Linux中,标准输入和标准输出都是作为文件处理的,虽然是一类特殊的文件,但从程序员的角度来看,它们和硬盘上存储数据的普通文件并没有任何区别。与所有其他文件一样,它们在打开后也有自己的缓冲区。

From: ibm.com

西安软件园-开源行动日

昨天(8月12日)全天,我们小组近二十人参加了Intel、Sun、Ibm等主办的开源行动日。前些天我们收到unix-center.net的邀请邮件,大家都觉得是个不错的机会。能更多的了解开源软件技术在企业中的应用和市场前景等。早上不到七点,我们就早早在校门口集合,向西安软件园出发。比较搞笑的是我们居然搞错了路线,最后坐出租跑了过去。
刚到时只有几个人,高伟他们便上去和那些人闲聊。最后才知道活动场地改了,来到一个已经挤满人的办公间,最后没办法还开了一个分会场,好在李则良给我们占了一些座位:) 演讲的人来回穿插在两个会场之间,就多个主题进行了讲解。
先是软件园领导致辞,对大家的到来表示欢迎,说没想到假期也能来这么多学生,很欣慰。

活动流程:

08:30 — 09:00 签到,领取资料
09:00 — 09:15 领导讲话 软件园
09:15 — 09:45 开源软件大赛活动介绍 共创软件联盟 刘澎
09:45 — 10:30 开源软件发展和软件企业创新 Sun 公司 Roger Dong
10:30 — 10:40 休息
10:40 — 11:25 英特尔助力开源软件企业创新 Intel 公司
11:25 — 12:10 开源操作系统 OpenSolaris 新特性 Sun 公司 Roger Dong
12:10 — 13:30 午餐
13:30 — 14:15 开源技术在行业的应用 中科红旗公司 孙通
14:15 — 15:00 优化 MySQL 的运行 Sun 公司 郭涛
15:00 — 15:45 利用英特尔软件工具提升应用性能 Intel 公司
15:45 — 15:55 休息
15:55 — 16:40 虚拟化(Virtualization) Sun 公司 郭涛
16:40 — 17:25 开放问答互动

陈老师当天也去了,整个活动当中问题多数是我们小组成员问的,互动效果很好。其中对OpenSolaris、数据库集群、虚拟化等技术做了深入讲解。走的时候大家也都领取到了unix-center.net赠送的T恤,都很高兴。
前天听灰狐社区的程勇说,他也要来做讲座。当天他讲的是关于如何利用开源构建高性能的企业级应用,不得不说他对开源的研究确实很深入,最后他还专门送给我们几件OpenSource的T恤。中间也认识了好多“同志”,有西电的冯升,西安理工的刘楠等。通过交谈可以看出,他们也对开源充满热情,我还强调了开源软件与自由软件的区别,提出我们发展的最终目标应该是自由软件。冯升前些天通过邮件联系过,他准备在西电开始推广GNU/Linux,并建立了网站(www.xdlinux.cn)。关于刘楠,我们则一直认为他张的像周晓玮,看来还正和我们西邮GNU/Linux有缘。
回来时下起了大雨,等了好久才分批坐上322,上车时都湿透了,好在车内人多气温高,下车时居然被“烘”干了。

总之,受益匪浅,大家多多努力。

回学校了

回学校了,用mutt查看了一下近期积攒的邮件。好在没有耽搁什么重要的事;-)

下面准备和王聪(电信系05级),一起做个程序,关于监控用户行为的。具体还在商量之中,应该是依靠模块后台工作。这个王聪linux下编程也很牛,好好向他学习。

在这里冒个泡~~过两天再总结一下近期的感受。