
linux 下C编程
文章平均质量分 75
xiaoweibeibei
沉溺于linux............
展开
-
gcc扩展学习总结
记得第一次读别人的驱动程序,看到了如下的结构:struct file_operations XXX_fops={ .owner = THIS_MODULE, .llseek = XXX_llseek,原创 2011-03-22 22:57:00 · 972 阅读 · 0 评论 -
linux UDP编程学习总结
与TCP的不同使用TCP套接口必须先要建立连接,而UDP套接口不需要预先建立连接,它在调用socket()生成一个套接口后,在服务器端调用bind()绑定端口,服务器阻塞于recvfrom()调用,客户端调用sendto()发送数据请求,阻塞于recvfrom()调用,服务器端调原创 2011-07-11 21:20:50 · 2230 阅读 · 0 评论 -
Linux网络编程学习总结
I/O模式I/O模式提供了一种机制,当一个或多个I/O条件满足时,可以将一个输入操作分为两个不同的阶段,I/O模式分为5中不同的类型,即:阻塞I/O,非阻塞I/O,I/O复用,信号驱动I/O和异步I/O。select函数函数:int select(int masfd,fd_set原创 2011-07-07 18:01:11 · 1178 阅读 · 0 评论 -
linux TCP简单编程学习总结
TCP提供了一种可靠的,复杂的,面向连接的服务,通过三段式握手过程建立连接,用4个分组交换序列终止连接。当建立连接时,它将从将从状态机制的CLOSED状态转换成ESTABLISHED状态,当终止连接时,它又返回到CLOSED状态。简单并发处理示例客户端代码:#原创 2011-07-05 19:22:38 · 1037 阅读 · 0 评论 -
套接字编程基础
网络编程,从某种程度上说就是进程间通信,套接口类似于进程的ID,通过IP地址指定通信的主机,通过端口号指定和主机上的那个进程通信,也就是通过IP+端口号唯一确定了通信的进程。通用套接口结构结构:struct sockaddr{ uint8_t sa原创 2011-07-04 19:46:06 · 5616 阅读 · 0 评论 -
Linux信号及信号处理学习总结
信号处理注册信号调用函数函数(1):void (*signal (int signumber,void((*func)int)))(int);头文件:signal.h说明:func为指向调用函数的函数指针,其也可以取特定值:SIG_IGN和SIG_DFL,其中SIG_IGN表示忽略signumber所指信号,SIG_DFL表示调用系统定义的默认处理。signal函数返回值类型同参数原创 2011-06-27 21:45:00 · 1365 阅读 · 0 评论 -
Linux基于流的操作学习总结
基于流的I/O操作流的打开函数:(1) FILE *fopen(const char *pathname,const char *type); (2) FILE *freopen(const char *pathname,const char *type, FILE *fp); (3) FILE *fdopen(int filedes,const cha原创 2011-06-22 19:39:00 · 2800 阅读 · 0 评论 -
Linux文件操作学习总结
文件类型:普通文件(文本文件,二进制文件)、目录文件、链接文件、设备文件、管道文件。 文件的权限:读、写、执行 文件的相关信息:目录结构、索引节点、文件数据索引节点的stat结构struct stat{dev_t st_dev;//文件使用的设备号ino_t st_inl;//索引节点号mode_t st_mode;//文件访问权限nlink_t st_原创 2011-06-20 18:51:00 · 12817 阅读 · 0 评论 -
Linux进程通信学习总结
SYSV子系统的相关概念 引用标识符:引用标识符是一个整数,表示每一个SYSV子系统的对象(共享内存,信号量,消息队列),它用于访问对象是在系统中的传递。 键:在SYSV子系统中用于定位系统中的应用标识符,它相当于一种路由算法,用来决定如何访问一个SYSV子系统的对象。 ipc_perm结构:它对应于每一个进程通信机制的对象,其定义如下: struct ipc_p原创 2011-06-17 19:42:00 · 5351 阅读 · 2 评论 -
Linux进程学习总结
进程控制相关函数进程派生函数:pid_t fork(void); pid_t vfork(void);头文件:unistd.h作用:都是创建一个与当前进程相同的新进程。区别:fork函数:该函数产生的的新进程是父进程的一个拷贝,但是该进程同父进程使用不同的数据段和堆栈段;fork调用将执行2次返回,一次是父进程的返回,一次是子进程的返回。从父进程返回的是子进程的原创 2011-06-17 19:40:00 · 2445 阅读 · 0 评论 -
内存管理学习总结
内存管理程序内存分配的方式:静态内存和动态内存静态内存是由编译器来分配的内存,动态内存是由用户分配的内存;动态内存分配函数函数所属头文件备注void *malloc(size_t size);stdlib.hsize表示所分配内存的大小,以字节记,不进行初始化。void *cal原创 2011-06-09 20:15:00 · 1361 阅读 · 0 评论 -
Linux下关于结构体对齐的总结
关于对齐模数许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地址的值是某个数k(通常它为4或8)的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数。当一种类型S的对齐模数与另一种类型T的对齐模数的比值是大于1的整数,我们就称类型S的对齐要求比T强(严格),而称T比S弱(宽松)。对于基本数据类型(int char),他们占用的内存空间在一个确定硬件系统下有个确定的值。而结构体成员内存分配情况却有所不同。就GUN GCC编译器而言,结构体的成员其对齐模数只能为1原创 2011-05-16 21:31:00 · 3732 阅读 · 0 评论 -
求助:Linux下地址的分配问题
实例程序如下:#include main(){int a=0;int b=0;printf("%d/n",&a);printf("%d/n",&b);}其结构如下:对于结构体而言,示例如下:#include typedef struct eee{ int a; double b; char c;}N3;main(){ N3 f;printf("%d/n",sizeof(f));printf("%d/n",&(f.a));printf("%d/n",&(f.b));pri原创 2011-05-16 21:29:00 · 724 阅读 · 0 评论 -
二维数组与二维指针总结
#include /*(一)输入参数为二维数组,函数形参为二维指针 (1)二维数组不能直接作为输入参数传给形参为二维指针的函数,如果要作为参数传递,在传递前必须进行强制类型转换(如果不转换gcc会报warning,而g++由于进行强制类型检查,会报error); (2)作为形参的二维指针在函数内部不能够像二维数组那样采用下标的方式来来引用,必须手动计算内存寻址;原创 2013-11-18 22:19:00 · 1491 阅读 · 0 评论