C/C++
文章平均质量分 77
luobin369
这个作者很懒,什么都没留下…
展开
-
linux ftok 函数
系统建立IPC通讯(如消息队列、共享内存时)必须指定一个ID值。通常情况下,该id值通过ftok函数得到。ftok原型如下:key_t ftok( char * fname, int id )fname就时你指定的文件名(该文件必须是存在而且可以访问的),id是子序号,虽然为int,但是只有8个比特被使用(0-255)。当成功执行的时候,一个key_t值将会被返回,转载 2012-04-23 09:43:52 · 482 阅读 · 0 评论 -
解析pcap文件及读取实现源码
pcap文件的格式为: 文件头 24字节 数据报头 + 数据报 数据包头为16字节,后面紧跟数据报 数据报头 + 数据报 ......pcap.h里定义了文件头的格式struct pcap_file_header { bpf_u_int32 magic; u_short version_major; u_sh转载 2013-01-24 14:16:28 · 13427 阅读 · 2 评论 -
惊群现象
“据说”惊群问题已经是一个很古老的问题了,并且在大多数系统中已经得到有效解决,但对我来说,仍旧是一个比较新的概念,因此有必要记录一下。什么是惊群举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉, 等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系统来说,多个进转载 2012-12-06 16:10:17 · 658 阅读 · 0 评论 -
Linux环境下C语言常用宏定义
01: 防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 02: 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean val转载 2012-12-06 16:52:32 · 1049 阅读 · 0 评论 -
UNIX 如果查询一个共享内存已经被IPCRM,程序中如何操作保证安全
进程内可以用根据ipc_perm的mode成员SHM_DEST位进行判断#include #include #include #include int main(void){ key_t key; int id; size_t size; void *addr; int ch; struct shmid_ds buf; un原创 2012-12-05 23:20:07 · 1439 阅读 · 0 评论 -
linux中errno使用
当linux中的C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因,在实际编程中用这一招解决了不少原本看来莫名其妙的问题。但是errno是一个数字,代表的具体含义还要到errno.h中去阅读宏定义,而每次查阅是一件很繁琐的事情。有下面几种方法可以方便的得到错误信息(1)void perro转载 2012-09-12 17:40:11 · 537 阅读 · 0 评论 -
守护进程
守护进程是在后台运行并且没有控制终端的进程。由于守护进程通常没有控制终端,所以,几乎不需要与用户交互。守护进程用于提供哪些没有任何用户交互就可以在后台做得很好的服务。例如,一个在后台运行观察网络活动并且记录任何可疑通信日志的进程就可以开发成守护进程。守护进程设计开发守护进程就像开发其他进程一样,但有一件事情即没有控制终端使它与任何其他普通进程区别开来。这就是创建守护进程时的主要转载 2012-09-11 17:45:48 · 494 阅读 · 0 评论 -
Linux 守护进程的编程方法
守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进 程。Linux的大多数服务器就是用守护进程实现的。比如,Internet服务器inetd,Web服务器httpd等。同时,守护进程完成许多系统任 务。比如,作业规划进程crond,打印进程lpd等。 守护进程的编程本身并不复杂,复杂的是各种版本的U转载 2012-09-11 16:54:28 · 448 阅读 · 0 评论 -
探讨C++中对象的“浅拷贝”与“深拷贝”
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include using namespace std;class CExample {private: int a;public: C转载 2012-04-19 11:45:47 · 1157 阅读 · 0 评论 -
C语言数据块读写函数:fread和fwrite
C语言中的各种读写函数,首先是最简单的读写一个字符的函数fputc和fgetc,在这个基础上又出现了putw和getw、fgets和fputs,此外还说过格式化读写函数fprintf和fscanf函数。 从原理上来说,只要fputc和fgetc函数基本就可以完成数据的读写操作了,但是在实际的使用中会遇到诸多不便,因此上面那一大堆函数就冒出来了(其实也不多)。上面函数中最方便的就是格式化读转载 2012-04-20 09:46:52 · 1787 阅读 · 0 评论 -
C/C++变量在内存中的分布
C/C++变量在内存中的分布在笔试时经常考到,虽然简单,但也容易忘记,因此在这作个总结,以加深印象。先写一个测试程序:#include #include int g_i = 100; int g_j = 200; int g_k, g_h; int main() { const int MAXN转载 2012-04-23 09:46:13 · 372 阅读 · 0 评论 -
大端法、小端法、网络字节序
关于字节序(大端法、小端法)的定义《UNXI网络编程》定义:术语“小端”和“大端”表示多字节值的哪一端(小端或大端)存储在该值的起始地址。小端存在起始地址,即是小端字节序;大端存在起始地址,即是大端字节序。 也可以说: 1.小端法(Little-Endian)就是低位字节排放在内存的低地址端即该值的起始地址,高位字节排放在内存的高地址端。 2.大端法(Big-Endia转载 2013-03-07 15:09:35 · 711 阅读 · 0 评论