
linux C 总结
文章平均质量分 57
迷你N
这个作者很懒,什么都没留下…
展开
-
网络设备驱动高级开发
网络设备不同于字符设备和块设备,它没有设备文件 ,但是它有不同于二者的套接字 套接字缓存区(sk_buff)结构是Linux 网络子系统(网卡)的核心内容,在中被定义 linux 套接字缓冲区支持分配,释放,指针的移动等功能函数 1>分配 struct sk_buff *dev_alloc_skb(unsigned int le原创 2013-10-27 13:40:12 · 725 阅读 · 0 评论 -
参数和返回值传递总结
函数的传参方式有值传递和地址传递,地址传递又分为指针传递和引用传递。函数的返回值也有值传递和地址传递,地址传递又分为指针传递和引用传递。参数的值传递:进入函数体后,为形参分配地址空间,将实参赋值给形参,对形参操作,退出函数体后,临时变量消失。参数的地址传递:进入函数体后,直接对实参操作。返回值的值传递:函数返回时,生成返回值类型的临时变量,将临时变量给调用处使用(赋值或者其它操作)原创 2013-10-27 13:49:09 · 1398 阅读 · 0 评论 -
内存管理
欢迎进入内存这片雷区。伟大的Bill Gates 曾经失言:640K ought to be enough for everybody — Bill Gates 1981程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本章的内容比一般教科书的要深入得多,读者需细心阅读,做到真正地通晓内存管理。7.1内存分配方原创 2013-10-27 13:43:53 · 612 阅读 · 0 评论 -
struct sockaddr、sockaddr_in、sockaddr_un的区别和联系
在linux环境下,结构体struct sockaddr在/usr/include/linux/socket.h中定义,具体如下:typedef unsigned short sa_family_t;struct sockaddr { sa_family_t sa_family; /* address family, AF_xxx */原创 2013-10-27 14:28:16 · 698 阅读 · 0 评论 -
sbrk和brk的区别
brk和sbrk主要的工作是实现虚拟内存到内存的映射.在GNUC中,内存分配是这样的:每个进程可访问的虚拟内存空间为3G,但在程序编译时,不可能也没必要为程序分配这么大的空间,只分配并不大的数据段空间,程序中动态分配的空间就是从 这一块分配的。如果这块空间不够,malloc函数族(realloc,calloc等)就调用sbrk函数将数据段的下界移动,sbrk函数在内核的管 理下将虚拟地址空间映原创 2013-11-26 16:04:16 · 2468 阅读 · 0 评论 -
C 程序的存储空间布局
讲到C程序的存储空间布局时都会给出这个图:或者这个图:注意一下几点:1.堆区大小是基本固定的,跟内存总线有关,常见的是32位,所以算出来总的 可使用的虚拟内存4G,内核使用1G,栈大小一般可以设置,默认大多数是8M,其他的微乎其微,所以推算出堆空间可以最大接近3G..2.堆的分配和释放是通过内核来管理的。3.堆地址和栈地址的生长方向取决于他的CPU是大端还是小端原创 2013-11-26 16:07:36 · 674 阅读 · 0 评论 -
C 语言 char * 转 结构体
typedef struct student{...........................}STU; char buf[128];int num = 0;STU stu *pstu; num = read(fd , buf,128);if(56 == num){//可以转换为对应的包格式 eg:56 bytes stu = *(S原创 2013-11-27 19:15:25 · 3833 阅读 · 0 评论 -
linux C fopen路径拼接
#define APPDIR "./"#define USERDIR APPDIR#define DIR_CFG USERDIR"cfg/"FILE *fp = fopen(USERDIR"session.ids","r");原创 2013-12-26 16:22:57 · 2376 阅读 · 0 评论