随笔分类 -  linux/unix

wait和waitpid详解
摘要:wait的函数原型是: #include <sys/types.h>#include <sys/wait.h>pid_t wait(int *status); 进程一旦调用了wait,就立即阻塞自己,由wait自动分析是否当前进程的某个子进程已经退出,如果让它找到了这样一个已经变成僵尸的子进程, wait就会收集这个子进程的信息,并把它彻底销毁后返回;如果没有找到这样一个子进程,wait就会一直阻塞在这里,直到有一个出现为止。 参数status用来保存被收集进程退出时的一些状态信息,它是一个指向int类型的指针。但如果我们对这个子进程是如何死掉的毫不在意,只想把这个僵尸 阅读全文

posted @ 2013-04-24 14:08 阿杜的世界 阅读(242) 评论(0) 推荐(0)

OOP和Linux内核的一点思考
摘要:一个理解:面向对象的出现是为了解决大型软件项目中代码复用性和代码可维护性的两个关键问题;相对于面向过程的语言(C/basic等)将要解决的问题的模型构建于头脑中,而写出的代码是基于机器的空间,面向对象语言在分析问题时候的层次更高一层,将要解决问题的模型利用class的概念表示出来,这样我们利用UML建模工具可以帮助我们建模。类似的,在学习软件架构的过程中,目前流行的SOA、面向方面等思想的意义在于将我们分析系统或者问题的层次提高,最主要的目的就是要让我们能够构建更大规模的软件系统,能够尽可能得复用已有的代码和前人的成果。 一个问题:Linux内核从出现的时候到现在,不是纯的面向过程构建的软件. 阅读全文

posted @ 2013-03-22 20:59 阿杜的世界 阅读(180) 评论(0) 推荐(0)

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
摘要:参考文章:http://blog.sina.com.cn/s/blog_6605f0730100zf6n.html但是经试验过后有些问题,现在总结如下:1、# service mysql stop2、# mysqld_safe --user=mysql --skip-grant-tables --skip-networking&3、# mysql -u root mysql4、mysql> UPDATE user SETPassword=PASSWORD('newpassword') where USER='root' and host=' 阅读全文

posted @ 2012-09-24 18:40 阿杜的世界 阅读(170) 评论(0) 推荐(0)

GDB的使用,无他,唯需手熟尔
摘要:简介:GDB是GUN发布的一款功能强大的程序调试工具。GDB主要完成下面三个方面的功能:1.启动调试程序.2.让被调试的程序在指定的位置停住(即可以设置断点)。3.当成被停住时,可以检查程序的状态(如变量值等等)。如何启动GDB?启动GDB很简单,如下所示:gdb 调试程序名 例如 :gdb a或者:gdb file 可执行文件名例如:gdb file a既然我们都已经能够启动GDB了,那么我们来一起看一下GDB都有哪些命令。注意:GDB中的这些命令是有全名和缩写,在括号内的为缩写命令:help 作用:显示gdb的使用帮助信息,后可接命令名,显示命令的使用信息命令:list(l) 作用:查看. 阅读全文

posted @ 2012-09-24 10:35 阿杜的世界 阅读(237) 评论(0) 推荐(0)

tasklet源码注释翻译
摘要:Tasklets---类似BHS的多线程与一般的软中断的主要不同是,tasklet只能在一个CPU上同时执行与一般的BHS的主要不同是:不同的tasklet可以在不同的CPU上同时运行特性:1、如果调用tasklet_schedule(),那么在这之后tasklet肯定回在某个CPU上被执行2、如果tasklet已经被调度选中,但是异常仍然没有开始,那么它将仅仅被执行一次3、如果tasklet已经在另外一个CPU上运行(或者调度请求是它自己发出的),该tasklet将会被延期执行4、tasklet对于自身来说是严格串行化执行,但对自己和别的tasklet来说可以并行执行。如果要求保证一些内部任 阅读全文

posted @ 2012-08-07 15:46 阿杜的世界 阅读(172) 评论(0) 推荐(0)

vim+ctags+cscope阅读源代码
摘要:下面以使用cscope阅读内核源代码为例:1、#从Linux内核官网下载内核源代码 2、#解压文件$ tar xvfj linux-2.6.38.15.tar.bz2 3、#进入源代码根目录$ cd linux-2.6.38.15 4、#递归生成标签文件$ ctags -R5、#递归生成索引信息文件$ cscope-indexer -r6、#使用cscope阅读源码$ cscope标签文件、索引信息文件只需要第一次或者代码发生变动时生成,以后使用直接运行cscope即可。这只是打开了宝库的大门,我也刚刚迈入,让我们一起领略linux的魅力吧,后续心得继续更新哈 阅读全文

posted @ 2012-07-12 20:30 阿杜的世界 阅读(225) 评论(0) 推荐(0)

Ubuntu 10.10下安装ncurses-devel
摘要:解决Ubuntu 10.10 使用`make menuconfig`配置Linux 内核时,出现缺少'ncurses-devel'库支持。*** Unable to find the ncurses libraries or the*** required header files.*** 'make menuconfig' requires the ncurses libraries.****** Install ncurses (ncurses-devel) and try again.***1. 问题状况一般情况下使用系统自带的软件管理器apt-get就可 阅读全文

posted @ 2012-07-12 16:48 阿杜的世界 阅读(365) 评论(0) 推荐(0)

new多个文件编程和split单个文件多个窗口编程
摘要:new:新开一个文件(横向分割),可同时编辑来两个文件;vnew:纵向分割split:同一个文件中(横向分割),针对同一个文件vsplit:纵向分割shift+zz:结束Ctrl+ww:变换窗口 阅读全文

posted @ 2012-04-19 20:06 阿杜的世界 阅读(161) 评论(0) 推荐(0)

内部命令和外部命令
摘要:UNIX命令有内部命令和外部命令之分。内部命令实际上是shell程序的一部分,其中包含的是一些比较简练的UNIX系统命令,这些命令由shell程序识别并在shell程序内部完成运行,通常在UNIX系统加载运行时shell就被加载并驻留在系统内存中。外部命令是UNIX系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以它们包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调进内存。通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell 程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。 阅读全文

posted @ 2012-02-26 11:04 阿杜的世界 阅读(384) 评论(0) 推荐(0)

警告: 隐式声明与内建函数 ‘exit’ 不兼容 解决方案
摘要:1 #include <stdio.h> 2 #include <stdlib.h> 3 #include "lib.h" 4 5 int main() 6 { 7 bill("Hello World"); 8 exit(0); 9 } 今天在编译我的一个linux程序时出现了如下错误: 警告: 隐式声明与内建函数 ‘exit’ 不兼容最后发现没有把stdlib.h包含进来,后来发现网上有很多人有这个问题,所以今天记下,留以后... 阅读全文

posted @ 2012-02-23 19:59 阿杜的世界 阅读(219) 评论(0) 推荐(0)

导航