随笔分类 -  C/C++

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)

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)

scanf在输入整型数据和字符型数据时的不同
摘要:/*C语言中读取整型数据的小程序段*/ #include <stdio.h> int main() { int n,i; int array[25]; while (scanf("%d",&n),n!= EOF) { for ( i = 0; i < n; i++ ) scanf("%d",array+i); for ( i = 0; i < n; i++ ) printf ("%d ",array[i]); } return 0; } #include <stdio.h> int main 阅读全文

posted @ 2012-04-16 14:12 阿杜的世界 阅读(379) 评论(0) 推荐(0)

孙鑫教程第三章小测试程序
摘要:#include <IOSTREAM.H> //定义一个基类,模拟CWinApp class Base { public: Base(); // virtual void fn();/*测试虚函数结果:call the Derived's fn*/ void fn();/*测试非虚函数结果:call the Base's fn*/ Base *p; }; Base::Base() { p = this;//this指针指向哪一个对象?答:指向派生类对象dd } void Base::fn() { cout << "call the Base&# 阅读全文

posted @ 2012-04-15 17:05 阿杜的世界 阅读(137) 评论(0) 推荐(0)

setprecision和setiosflags函数
摘要:1、setprecision 也是包含在命名空间iomanip 中的C++ 操作符,该操作符的作用是设定浮点数小数点后的位数;setprecision(2) 的意思就是小数点输出的精度,即是小数点右面的数字的个数为2,C++默认的流输出数值有效位是6。。2、#include <iomanip>它是I/O流控制头文件,就像C里面的格式化输出一样.以下是一些常见的控制函数的:dec 置基数为10 相当于"%d"hex 置基数为16 相当于"%X"oct 置基数为8 相当于"%o"setfill(c) 设填充字符为csetw(n 阅读全文

posted @ 2012-04-13 16:33 阿杜的世界 阅读(784) 评论(0) 推荐(0)

free和malloc的使用
摘要:1、动态内存分配时,用malloc申请内存,在使用完之后,一定要记得用free释放内存今天我在编写程序时遇到了这样一个问题:*** glibc detected *** ./SqlList: free(): invalid next size (fast): 0x09776108 ***======= Backtrace: =========/lib/i386-linux-gnu/libc.so.6(+0x6ebc2)[0xe29bc2]/lib/i386-linux-gnu/libc.so.6(+0x6f862)[0xe2a862]/lib/i386-linux-gnu/libc.so.6( 阅读全文

posted @ 2012-04-02 20:47 阿杜的世界 阅读(198) 评论(0) 推荐(0)

const(一)
摘要:今天编写一个字符窜处理函数,因为不想让字符窜在子函数中被修改,因此传参数时,将参数设置成了常量指针,代码如下: 1 /* 2 *作者:杜琪 3 *功能:在一个字符窜中进行搜索,查找所有在一个给定字符集合中出现的字符 4 *时间:2012.3.21 5 *心得:1、const的用法,编译时有警告? 6 *答:常量指针只能赋值给常量指针 7 * */ 8 #include <stdio.h> 9 #include <stdlib.h> 10 char *find_char(char const *source,char const *chars) ... 阅读全文

posted @ 2012-03-21 12:48 阿杜的世界 阅读(171) 评论(0) 推荐(0)

指针(二)
摘要:1、指向数组的指针例子:int a[]={'a','b','c'};int *p=a;则*(p+i) 等价于a[i]亲,注意不要越界噢,尤其是处理字符窜的时候,注意\0!!2、指针数组还是一个数组,只不过数组元素是指针了例子:char *argv[]就非常典型3、指针与字符窜处理字符窜的时候要主意\0这个小子例子: /* 2 *功能:自己实现strcmp函数 3 *心得:... 阅读全文

posted @ 2012-03-19 20:51 阿杜的世界 阅读(137) 评论(0) 推荐(0)

指针(一)
摘要:1、指针的本质:地址。指针是一个变量,一般4个字节大小,这个变量的value是一个内存地址。2、指针的类型:从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型:(1)int *ptr; //指针的类型是int *(2)char *ptr; //指针的类型是char *(3)int **ptr; //指针的类型是 int **(4)int (*ptr)[3]; //指针的类型是int(*)[3](5)int *(*ptr)[4]; //指针的类型是 int*(*)[4]怎么样?找出指针的类型的方法是不是很简 阅读全文

posted @ 2012-03-19 19:53 阿杜的世界 阅读(178) 评论(0) 推荐(0)

导航