DongHao: 03 2009存档
可以通过
int opts;
opts=fcntl(fd, F_GETFL);
if (opts < 0)
{
perror("fcntl failed\n");
return;
}
opts = opts | O_NONBLOCK;
if(fcntl(fd, F_SETFL, opts) < 0)
{
perror("fcntl failed\n");
return;
}
return;
把 fd 设为非阻塞模式(non-blocking)
在recv时
while(rs)
{
buflen = recv(activeevents[i].data.fd, buf, sizeof(buf), 0);
if(buflen < 0)
{
// 由于是非阻塞的模式,所以当errno为EAGAIN时,表示当前缓冲区已无数据可读
// 在这里就当作是该次事件已处理处.
if(errno == EAGAIN)
break;
else
return;
}
else if(buflen == 0)
{
// 这里表示对端的socket已正常关闭.
}
if(buflen == sizeof(buf)
rs = 1; // 需要再次读取
else
rs = 0;
}
这段recv代码摘自http://blog.chinaunix.net/u/14063/showart_377118.html,今天帮了大忙。在非阻塞模式下,recv返回的buflen可能小于用户要求的接收长度(recv第三个参数);而在阻塞模式(blocking)下,毫无疑问,recv会把进程挂住,直到收到用户要求的长度为止。
int opts;
opts=fcntl(fd, F_GETFL);
if (opts < 0)
{
perror("fcntl failed\n");
return;
}
opts = opts | O_NONBLOCK;
if(fcntl(fd, F_SETFL, opts) < 0)
{
perror("fcntl failed\n");
return;
}
return;
把 fd 设为非阻塞模式(non-blocking)
在recv时
while(rs)
{
buflen = recv(activeevents[i].data.fd, buf, sizeof(buf), 0);
if(buflen < 0)
{
// 由于是非阻塞的模式,所以当errno为EAGAIN时,表示当前缓冲区已无数据可读
// 在这里就当作是该次事件已处理处.
if(errno == EAGAIN)
break;
else
return;
}
else if(buflen == 0)
{
// 这里表示对端的socket已正常关闭.
}
if(buflen == sizeof(buf)
rs = 1; // 需要再次读取
else
rs = 0;
}
这段recv代码摘自http://blog.chinaunix.net/u/14063/showart_377118.html,今天帮了大忙。在非阻塞模式下,recv返回的buflen可能小于用户要求的接收长度(recv第三个参数);而在阻塞模式(blocking)下,毫无疑问,recv会把进程挂住,直到收到用户要求的长度为止。
董昊: http://developers.solidot.org/article.pl?sid=09/03/24/0859257&from=rss
徐 冠鹏: 那我就是海盗和忍者的综合体
董昊: 就叫“盗忍综”
徐 冠鹏: 不许这么叫!!!
董昊: 或者“盗忍体”
徐 冠鹏: 不许起外号!!!
董昊: 就叫你“维京海盗”
徐 冠鹏: 不成!!!!
董昊: 就叫 viking
董昊: 多酷啊
徐 冠鹏: 这么酷, 你自己留着用吧, 我就算了
董昊: 我没有海盗的气质
徐 冠鹏: 我也没有
董昊: http://year30809.sudleyjnr.net/files/2009/03/viking2_blue_white.gif 以后作为你的logo
徐 冠鹏: 我晕, 为什么你会帮我找这些呢? 不不不不不不不!!!!!!!
董昊: linux kernel 2.6.29都换logo了,你也换吧
徐 冠鹏: 为什么?!
董昊: 你是 xgp kernel 2.3.25 啊!
徐 冠鹏: 你能不能歇会儿? 大夫? 大夫! 给这家伙注射点儿镇静剂吧!
徐 冠鹏: 那我就是海盗和忍者的综合体
董昊: 就叫“盗忍综”
徐 冠鹏: 不许这么叫!!!
董昊: 或者“盗忍体”
徐 冠鹏: 不许起外号!!!
董昊: 就叫你“维京海盗”
徐 冠鹏: 不成!!!!
董昊: 就叫 viking
董昊: 多酷啊
徐 冠鹏: 这么酷, 你自己留着用吧, 我就算了
董昊: 我没有海盗的气质
徐 冠鹏: 我也没有
董昊: http://year30809.sudleyjnr.net/files/2009/03/viking2_blue_white.gif 以后作为你的logo
徐 冠鹏: 我晕, 为什么你会帮我找这些呢? 不不不不不不不!!!!!!!
董昊: linux kernel 2.6.29都换logo了,你也换吧
徐 冠鹏: 为什么?!
董昊: 你是 xgp kernel 2.3.25 啊!
徐 冠鹏: 你能不能歇会儿? 大夫? 大夫! 给这家伙注射点儿镇静剂吧!
阳台上的植物们长势不错,毕竟春天到了。
珍珠芦荟,记得去年十一刚买来的时候,又薄又短,现在胖多了。
吊兰发很多叶子,叶面也厚了。
这就是捡回来的吉庆果种子长出来的,嘻,当初应该给种子拍张照的。
榕树,剪了枝后看着茂密一些了,有很多新芽,等夏天了应该能基本成了小伞状。
珍珠芦荟,记得去年十一刚买来的时候,又薄又短,现在胖多了。
吊兰发很多叶子,叶面也厚了。
这就是捡回来的吉庆果种子长出来的,嘻,当初应该给种子拍张照的。
榕树,剪了枝后看着茂密一些了,有很多新芽,等夏天了应该能基本成了小伞状。
int i;
for(i=0; i<100; i++)
{
i = i;
}
本来想用上面这样的循环来延迟时间,结果,在gcc用 -O3 编译以后,这个“无用循环”被优化掉了。再试了试
int i, j;
for(i=0; i<100; i++)
{
j = i*i;
}
不行,还是被优化掉了。最后只能这样:
int i, j;
for(i=0; i<100; i++)
{
j = i*i;
}
if(j > 1000)
......
j现在变成了“循环后还要用到的变量”,这样,gcc就无法认出这是无用循环了。
看来 gcc -O3 还是很厉害的。
for(i=0; i<100; i++)
{
i = i;
}
本来想用上面这样的循环来延迟时间,结果,在gcc用 -O3 编译以后,这个“无用循环”被优化掉了。再试了试
int i, j;
for(i=0; i<100; i++)
{
j = i*i;
}
不行,还是被优化掉了。最后只能这样:
int i, j;
for(i=0; i<100; i++)
{
j = i*i;
}
if(j > 1000)
......
j现在变成了“循环后还要用到的变量”,这样,gcc就无法认出这是无用循环了。
看来 gcc -O3 还是很厉害的。
看linux内核很容易被struct address_space 这个结构迷惑,它是代表某个地址空间吗?实际上不是的,它是用于管理文件(struct inode)映射到内存的页面(struct page)的;与之对应,address_space_operations 就是用来操作该文件映射到内存的页面,比如把内存中的修改写回文件、从文件中读入数据到页面缓冲等。
参考下面这张图,摘自《深入理解linux虚拟内存管理》,对理解linux内存管理颇有帮助
参考下面这张图,摘自《深入理解linux虚拟内存管理》,对理解linux内存管理颇有帮助
看看这个“ Linux驱动程序开发班 ”,注意第三节“培养对象”——“适用于理工科计算机相关专业失业大学毕业生、企业开发人员和技术经理等....”。
多明确的定位,“计算机相关专业失业大学毕业生”,自己都找不到工作,还要交几千块钱给培训机构,期望他们能带自己走出“失业”。
很好,很好。
多明确的定位,“计算机相关专业失业大学毕业生”,自己都找不到工作,还要交几千块钱给培训机构,期望他们能带自己走出“失业”。
很好,很好。
四年没回家乡了,上上个周末用google earth回忆了一下。
这是车队,在一座山上,一家人刚迁到贵州的时候,就住在大门口旁边的一个值班室里。想起来真艰苦。
我上的小学,在厂办公大楼的对面
我上的中学,在一个小山包上,记不清在操场上打过多少次篮球了。右下角的树林大家都叫“野猪林”,到现在我都不知道为什么。
厂里的大操场,我上小学的时候那里还是一片菜地,后来改成这样,是全厂人晚饭后散步的地方。
后山,小时候玩的最多的地方,郁郁葱葱。有山的地方才有灵气。
小时候常想:翻过后山,那一面是哪里呢?光思考这个问题都是多么有趣的事,等现在有了google earch,清楚的看到了山后是什么,唉,不过是市中心而已。
也许,人就是这样,我们发现的越多、知道的越多,就越没有探索带来的乐趣了。
小时候常想:翻过后山,那一面是哪里呢?光思考这个问题都是多么有趣的事,等现在有了google earch,清楚的看到了山后是什么,唉,不过是市中心而已。
也许,人就是这样,我们发现的越多、知道的越多,就越没有探索带来的乐趣了。
想当初小学的时候,厂电视台放了《终结者2》,结果第二天大家一上学,几乎所有的男生都在讨论这部超级好看的片子,没有看过的听着我们讲,也后悔死了晚上没看电视。今天看到了《终结者4:救世军》的预告片,个人感觉还不错,很大手笔的样子,但愿不要像《终结者3》一样絮絮叨叨,5月上映,期待一下。