BlueClue's Tech Blog

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

摘要: 对于Linux系统编程的学习,个人认为读两本书就已经足够,一本是《Unix\Linux编程实践教程》,国外的经典教材,作者将Linux系统编程的相关内容分门别类划分的非常条理,将难以理解的Linux系统内部模型和交互过程做了3D建模,非常直观的将我们脑子里的谜团揉开、展现、分析,对于一些比较纠结的问题,作者做了恰当有趣的比喻,例如将用户模式和内核模式的切换比作肯特电话亭换衣服变超人,对于概念的讲解简洁明了,尽求达意,不说教,可读性很强;另一本就是圣经级的《UNIX环境高级编程》,在众多同行心目中地位崇高,但是不要被书的名字吓倒,我刚刚读完前三章并翻了翻后面,这本书与高级无关,从基础讲起由浅入深,与第一本书相比要求读者具备C基础,但第一本书每章后面的习题难度也不小,其它暂不作评价。 阅读全文
posted @ 2011-11-26 14:22 blueclue 阅读(663) 评论(0) 推荐(0) 编辑

2012年1月13日

摘要: 描述文件夹属性结构体struct dirent(可参考在线文档)的最后一个成员d_name,用以存储文件名称, 一些类Unix系统也会采用下面的定义:struct dirent{ ino_t d_ino; off_t d_off; unsigned short d_reclen; char d_name[1];};显然对于一个用来存储字符串的数组,一个字节的空间只够存一个结束符'\0'的,这样做的目的是在利用struct dirent申请内存空间的时候,d_name可以按需申请,而不需要一... 阅读全文
posted @ 2012-01-13 10:39 blueclue 阅读(4215) 评论(0) 推荐(0) 编辑

2011年11月8日

摘要: head和tail 他们看起来跟cat好像是近亲,做的事情差不多,都是读取文件内容,head从文件头读起,tai则从文件尾读取,默认读取10行并打印,这里两个命令都只实现了默认打印10行和指定打印行数参数-n。 阅读全文
posted @ 2011-11-08 19:41 blueclue 阅读(4922) 评论(0) 推荐(0) 编辑

2011年11月2日

摘要: read、write所在空间为“用户空间”,大框底部的空间为“内核空间”,访问任何硬件设备包括磁盘都要经过“内核空间”这一层,但是在“用户模式”下只能访问“用户空间”,要访问“内核空间”需要从“用户模式”切换到“管理员模式”,书中还对这个过程做了个形象的比喻: 肯特要到电话亭从“用户模式”切换到“管理员模式”才能变成超人,完成任务在切回记者身份,赚钱糊口(毕竟拯救地球也是义务的,填不了肚子),如果任务多了,就算是超人,找电话亭切来切去,也是很低效的。 缓冲区的设置原理,像是cpu与硬盘之间的内存的作用,也是这么个原理,都知道内存过大是浪费,太小则低效,那么是否存在一个刚刚好的量,我们姑且把这个量称为临界点,Linux内核对于文件I/O交互是否做了控制? 本书对于缓冲区大小测试的量是4096,测试的方法是读一个5M大小的文件将内容写到另一个文件里,测试结果间下表,似乎缓冲区设到40 阅读全文
posted @ 2011-11-02 19:41 blueclue 阅读(2048) 评论(0) 推荐(0) 编辑

2011年10月29日

摘要: 能够查看linxu系统源码是类unix系统开源性的体现,是在其他系统享受不到的待遇,我的系统是ubuntu,将查看过程列在下面 阅读全文
posted @ 2011-10-29 12:43 blueclue 阅读(6382) 评论(0) 推荐(0) 编辑

2011年10月24日

摘要: wtmp文件记录了所有的登陆和注销。它的格式与utmp很相似,除了它用空用户名表示某个相关联终端的注销。此外,终端名称~并且用户名为shutdown或者reboot表明系统关闭或者重启,而且当date(1)改变系统时间时,终端名称里为|/}记录了原来的/新的系统时间。wtmp文件记录由login(1),init(8),和一些版本的getty(8)(例如:mingetty(i)或者agetty(8))来维护。这些程序并不创建该文件,所以如果文件被移除,保存记录的功能就被关闭了。查阅login(3)文档,里面有段话,大体意思是讲:login()的时候以struct utmp* ut为参数,用USER_PROCES 阅读全文
posted @ 2011-10-24 13:37 blueclue 阅读(2372) 评论(0) 推荐(0) 编辑

2011年10月8日

摘要: 一夜,月明星稀,屋内红烛之下,关二爷横卧于榻上,右手抵于头部,左手执一卷《春秋》厚典,周仓手握青龙偃月刀立于其侧,月光、烛光、刀光,相映在关羽(蹭明瓦亮的)青髯之上,他虽只是在读书,静谧的夜色里却隐约着一股肃杀之气,突听门户支沟一声响,门外貂禅(注:不要邪恶,谁让他俩有绯闻)举足迈过门槛,步步莲花走过来,周仓瞧着她一时失神,握刀手背无意识的碰在烛火之上,手背灼热吃痛,一溜手长刀直落落的落向关公胸前长髯,电光火石之间,关云长以迅雷(不及掩耳盗铃之响叮当)之势起身举左手竹简格挡,然均知青龙偃月何等锋利,阻挡之下刀锋欲破简而出直奔腹部而来,二爷身子一缩,刀口正砍在两腿之间的榻木上。周仓捂着手背呼呼吹气,关羽双手后撑于榻上,双腿之间确实把明晃晃的刀,镜头定格2秒。 阅读全文
posted @ 2011-10-08 20:30 blueclue 阅读(507) 评论(0) 推荐(0) 编辑

摘要: 最近amazon的kindle touch发售,搞的很热闹,我也查资料研究了一下这个产品,发现人家做产品确实有股专注劲儿,人家不做万能的东西,就作阅读,其它什么功能都没有。专注是态度,但盈利是目的,由此我联想起了apple的产品生态圈—— macbook、mac os、ipod、iphone、iTunes Store、app store、xcode,从消费品ipod、iphone,它们消费音乐和软件,去itunes store和app store去买,软件何来,开发人员需要mac os、xcode也要有iphone,环环都有利润,这环环套牢的利益链真可谓传说中的连环套,看看,兵法都出来了,那这么推来,这次kindle touch价格搞这么低,对于amazon的电子书市场来说,kindle也必是其中重要的一环吧。 阅读全文
posted @ 2011-10-08 19:26 blueclue 阅读(1022) 评论(4) 推荐(0) 编辑

2011年9月30日

摘要: 使用utmp、wtmp、utmpx都需要#include ,它们的文件是二进制的,内容实际上是一个utmp结构体序列,该结构体声明在utmp.h文件中,结构成员记录了详细的用户登陆信息,它们的区别在于: wtmp记录了所有登陆和注销记录,格式与用空用户名标记注销的utmp很相似,登陆也好注销也好都是往里面添加数据; 而utmp通过修改文件内容,登陆的时候添加记录,注销时删除记录,只记录当前使用系统的用户信息; utmpx它与utmp结构体相似,区别在于POSIX.1没有指定utmp结构,而是定义为utmpx,它定义了ut_type、ut_pid、ut_line、ut_id、ut_user和ut_tv,并没有设定ut_line、ut_user字段的长度。 阅读全文
posted @ 2011-09-30 19:51 blueclue 阅读(1071) 评论(0) 推荐(0) 编辑

2011年9月17日

摘要: WARNING: Application does not specify an API level requirement! Re-installation failed due to different application signatures. You must perform a full uninstall of the application. WARNING: This will remove the application data! Please execute 'adb uninstall com.example.android.apis' in a shell. Launch canceled! 阅读全文
posted @ 2011-09-17 15:10 blueclue 阅读(1594) 评论(0) 推荐(0) 编辑

2011年9月15日

摘要: read从当前位置读入指定长度的数据,然后移动当前位置指针,指向下一个未读的数据。当从文件读数据时,内核从指针所标明的地方开始,读取指定的字节,然后移动位置指针,指向下一个未被读取的字节,写文件的操作也是类似的。指针是与文件描述符相关联的,而不是与文件关联,所以如果两个程序同时打开一个文件,这时会有两个指针,两个程序对文件的读操作不会互相干扰。 阅读全文
posted @ 2011-09-15 13:14 blueclue 阅读(1309) 评论(0) 推荐(0) 编辑

2011年9月5日

摘要: A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section of an activity, which has its own lifecycle, receives its own input events, and which you can add or remove while the activity is running. Fragm 阅读全文
posted @ 2011-09-05 10:00 blueclue 阅读(1770) 评论(0) 推荐(0) 编辑

2011年6月4日

摘要: 使用ubuntu的动机是去年一个跨平台服务器软件项目的开发,界面接口平易近人,网络软件源的概念让软件操作更为易用——安装、卸载、升级招招打得有模有样,图省事儿使用GUI,玩深沉用终端命令,让你只有想不到的没有找不到的,虽然有些软件质量不尽如人意,但是在一片陌生的土地上,你可以开垦、劳作、开花、收货,会有种成就感。 阅读全文
posted @ 2011-06-04 13:32 blueclue 阅读(288) 评论(0) 推荐(0) 编辑

2011年2月5日

摘要: ACE六步配置: 一、于http://download.dre.vanderbilt.edu/下载相应平台的ACE包,这里写道如果是windows平台下载.zip包,其他平台下载.gz或bz2包,我是乌布图选择了个gz包,我用的是6.0.0; 二、解压包,里面有个ACE-INSTALL.html文档,在线页面地址为http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix,按此过程,进行接下来的安装配置; 三、终端命令行内,在所解压的目录(例如/home/administrator/libs/ACE_wrappers)内,建立目录objdir(例如/home/administrator/libs/ACE_wrappers/objdir),并进入之,如下命令:    mkdir objdir cd objdir 四、运行命令../configure,这个命令有个参数选项,具体参看资料吧,懒得啃英文也木法,谁让代码都是字母呢; 五、运行make命令,编 阅读全文
posted @ 2011-02-05 17:52 blueclue 阅读(3859) 评论(0) 推荐(0) 编辑

2010年7月21日

摘要: 条件变量是什么?条件变量为我们提供了另一种线程间同步的方法,然而,互斥量是通过控制线程访问数据来实现同步,条件变量允许线程同步是基于数据实际的值。如果没有条件变量,程序员需要让线程不断地轮询,以检查是否满足条件。由于线程处在一个不间断的忙碌状态,所以这是相当耗资源的。条件变量就是这么一个不需要轮询就可以解决这个问题的方法。条件变量总是跟互斥锁(mutex lock)一起使用。 阅读全文
posted @ 2010-07-21 09:23 blueclue 阅读(5696) 评论(0) 推荐(0) 编辑