- 博客(10)
- 资源 (9)
- 收藏
- 关注
原创 僵尸进程(zombie)以及避免方法
僵尸进程在多进程环境下,父进程要长时间运行 ,期间可能创建子进程,然后子进程有退出时,但是父进程还在运行,这时就产生了zombie进程。 子进程退出后,在进程表中还要占一项,并且子进程的一些资源等待父进程回收。如果父进程没有显示地调用wait来为子进程回收资源的话,在父进程退出之前子进程就变成了僵尸进程。如果父进程退出了,僵尸子进程也消失了。 还有一
2011-12-15 11:33:01
387
原创 如何判断map容器的key是否存在
首先,不推荐使用[]来判断key是否存在,因为使用操作符[]会向map容器里插入一个元素。 map的operator[]重载大致是这样一个内容: data_type& operator[]( const key_type& k ) { value_type v
2011-12-14 11:07:09
4150
原创 如何识别数据包编码
1.汉字utf8编码识别 utf8字符编码特征: 1字节:0xxxxxxx 2字节:110xxxxx 10xxxxxx 3字节:1110xxxx 10xxxxxx 10xxxxxx (汉字一般落在这个区间) 4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节:111110 xx 10 xx
2011-12-13 10:40:30
402
原创 如何识别数据包编码
1.汉字utf8编码识别 utf8字符编码特征: 1字节:0xxxxxxx 2字节:110xxxxx 10xxxxxx 3字节:1110xxxx 10xxxxxx 10xxxxxx (汉字一般落在这个区间) 4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 5字节:111110 xx 10 xx
2011-12-13 10:38:43
1334
转载 linux的进程状态
1)进程的状态的概述:1.1)Running(R),运行或将要运行1.2)Interruptible(S),被阻断而等待一个事件,可能会被一个信号激活1.3)Uninterruptible(D),被阻断而等待一个事件,不会被信号激活1.4)Stopped(T),由于任务的控制或者外部的追踪而被终止,比如:strace1.5)Zombie(Z),僵死,但是它的父进程尚未调用wai
2011-12-07 21:19:33
815
原创 使用snprintf时的两点注意事项
使用snprintf函数时要注意两点,这是我看过无数使用这个函数的程序员绝大部分都存在的两点隐患: 比如: char buf[LEN]; int n = snprintf(buf, LEN, "%s%d%s", str1, int2, str3);1.snprintf会自动在格式化后的字符串尾添加\0, 所有格式化长度,也就是第二个参数没有必要用LEN-1,
2011-12-07 21:10:48
562
原创 如何调试core文件
由于自己的粗心,这几天我的程序跑性能环境时出了很多core,测试部的小包包一向很喜欢收集core,但是收集了我又不会调试,直到今天看了赵总华丽的调试core之后,才知道原来一个core可以有这么丰富的信息。于是我也找了几个core小玩了一下,总结了调试core的常用命令。 调试一个core按照如下的步骤执行: 一.gdb 程序名 core名前提是应用程序编译时要加-g选项,
2011-11-29 20:36:55
591
原创 free空指针是安全的
之前忘了听谁说内核里free一个空指针是不行的,而且看了公司产品的代码发现free时都是调用了一个宏: #define VFREE_INIT(ptr) \ do \ { \ if (ptr != NULL) \ { \ vfree(ptr); \ ptr = NULL; \ } \ }
2011-11-19 14:31:55
1030
原创 获取IP数据包中的ICMP段
根据TCP/IP协议,ICMP数据段紧跟在IP头部之后,所以获取ICMP头部的方法就简单了: struct icmphdr* icmph = (struct icmphdr*)((unsigned char*)iph + iph->ihl*4); 得到ICMP段的起始指针之后,还要得到它的数据段长度,长度就用总的数据包长度减去IP头和ICMP头:
2011-11-15 08:59:26
516
原创 waitpid是会阻塞的
刚写个demo程序验证了一下,waitpid是会阻塞的,当然它可以设置成非阻塞模式,通过设置WNOHANG选项。 我的demo程序的思路是这样的,主进程fork两个子进程,第二个子进程延迟1s结束,主进程调用两个waitpid,先等待子进程2,再等待子进程1 。 测试结果,子进程2结束后第一个waitpid才会返回。#include #include
2011-11-14 09:20:06
959
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人