编程积累
文章平均质量分 74
steven_yzx
天行健,君子以自强不息!地势坤,君子以厚德载物!
展开
-
生产者与消费者
<br />include<stdio.h><br />#include<pthread.h><br />#include<sys/types.h><br />#include<unistd.h><br />#include<semaphore.h><br />#include<stdlib.h><br />#define SIZE_OF_BUFFER 10<br />int buffer[SIZE_OF_BUFFER];//缓冲数组<br />int in=0,out=0;//采用循环队列方式进行数组的访原创 2011-05-05 23:46:00 · 713 阅读 · 0 评论 -
函数指针举例
#include #include typedef void (*funp_t)(char *sv);funp_t funp;funp_t funp_a;funp_t funp_b;void fun(char *sv){ printf("%s\n", sv);}void fun_unknow(char *sv){ printf("fi原创 2011-12-23 13:59:13 · 788 阅读 · 0 评论 -
linux 进程通信 -- 信号量(更新ing)
参考文章 http://www.9linux.com/?query=sem_init&mode=mansem_init: 初始化信号量sem_t,初始化的时候可以指定信号量的初始值,以及是否可以在多进程间共享。sem_wait: 一直阻塞等待直到信号量>0,进程获得源后会将信号量值减 1。sem_timedwait:原创 2012-03-07 23:50:27 · 1090 阅读 · 1 评论 -
线程基本概念
一、线程与进程1.1 线程与进程相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了提高程序的并发度,从而提高程序运行效率和响应时间。线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以原创 2011-05-05 23:42:00 · 732 阅读 · 0 评论 -
Linux c 的可变长数组
#include #include #include static char arry_b[0];void lengthen_arry(int n){ const char *head = "headstr-"; const char *tail = "tailstr"; char arr[n+1]; char vla[str原创 2012-03-19 23:49:26 · 6212 阅读 · 1 评论 -
数组越界的几个经典范例
//1.下面代码有什么错误?Void test1() { char string[10]; char *str1="0123456789"; strcpy(string, str1); } //--------------------------------------------------------------------------2.下面代原创 2012-08-10 08:54:57 · 1382 阅读 · 0 评论 -
Linux 进程通信--共享内存
共享内存函数由shmget、shmat、shmdt、shmctl四个函数组成。下面的表格列出了这四个函数的函数原型及其具体说明。1. shmget函数原型shmget(得到一个共享内存标识符或创建一个共享内存对象)所需头文件#include #include 函数说明得到一个共享内存标识符或创建一个转载 2012-08-30 16:15:49 · 5644 阅读 · 0 评论 -
获取不小于某个数,且是另一个数的最小公倍数
#define CEILING_2_POWER(x,a) ( ((x) + ((a) - 1) ) & ( ~((a) - 1) ) )void t_c(){ printf("xxx:%d\n",CEILING_2_POWER(44, 16));} 猜猜这个宏能完成什么功能! 是不是很经典原创 2012-09-20 17:03:50 · 3021 阅读 · 4 评论 -
sscanf() 函数用法
sscanf格式中包含类似正则表达式: format-type中有%[]这样的type field。如果读取的字符串,不是以空格来分隔的话,就可以使用%[]。 %[]类似于一个正则表达式。[a-z]表示读取a-z的所有字符,[^a-z]表示读取除a-z以外的所有字符。 1.读取时间字符串 sscanf("2006:03:18 - 2006:04:18", "原创 2012-10-12 11:49:56 · 1020 阅读 · 0 评论 -
C 实现内存池
介绍: 设计内存池的目标是为了保证服务器长时间高效的运行,通过对申请空间小而申请频繁的对象进行有效管理,减少内存碎片的产生,合理分配管理用户内存,从而减少系统中出现有效空间足够,而无法分配大块连续内存的情况。目标: 此次设计内存池的基本目标,需要满足线程安全性(多线程),适量的内存泄露越界检查,运行效率不太低于malloc/free方式,实现对4-128字节范围内的内转载 2012-09-25 16:41:14 · 5408 阅读 · 0 评论 -
c inline 属性
本文介绍了GCC和C99标准中inline使用上的不同之处。inline属性在使用的时候,要注意以下两点:inline关键字在GCC参考文档中仅有对其使用在函数定义(Definition)上的描述,而没有提到其是否能用于函数声明(Declare)。从inline的作用来看,其放置于函数声明中应当也是毫无作用的:inline只会影响函数在translation unit(可以简单理解为C源码转载 2013-01-17 10:36:45 · 876 阅读 · 0 评论 -
vim 光标定位
在 vi 中, 移动光标和编辑是两件事, 正因为区分开来, 所以可以很方便的进行光标定位和编辑. 因此能更快一点移动光标是很有用的.文中的c-表示ctrl,大小写敏感。光标定位还需结合搜索。=== 光标定位 == h或^h 向左移一个字符 j或^j或^n 向下移一行 k或^p 向上移一行原创 2011-06-14 09:13:00 · 11419 阅读 · 1 评论 -
函数指针分析
1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()”表示这是一个函数,其前缀运算符星号“*”表示此函数为指针型函数,其函数值为指针,即它带回来的值的类型为指针,当调用这个函数后,将得到一个“指向返回值为…的指针(地址),“类型名”表示函数返回的指针指向的类型”。原创 2011-12-23 14:26:12 · 1030 阅读 · 0 评论 -
vim 正则表达式
Vim中的正则表达式功能很强大,如果能自由运用,会带来很愉快的体验。一、vim编辑的常用命令 s d / ?vim的这些常用命令可以配合表达式使用。二、元字符元字符是具有特殊意义的字符。使用元字符可以表达任意字符、行首、行 尾、某几个字符等意义。元字符一览元字符 说明.原创 2011-10-28 18:47:09 · 2256 阅读 · 0 评论 -
udp广播发送数据
<br />//server<br />#include <stdio.h><br />#include <sys/types.h><br />#include <sys/socket.h><br />#include <stdlib.h><br />#include <errno.h><br />#include <string.h><br />#include <unistd.h><br />#include <netinet/in.h><br原创 2011-05-05 19:20:00 · 2813 阅读 · 0 评论 -
线程相关函数汇总
<br />linux下pthread函数汇总<br /> 通过在线帮助查看:<br /> # man -k pthread<br /> 通过在线查看具体函数的帮助<br /> # man sigwait 可以获得sigwait的在线帮助.<br /> pthread_atfork (3thr) - register handlers to be called at fork(2) time<br /> pthread_attr_destroy [pthread_attr原创 2011-05-05 23:43:00 · 670 阅读 · 0 评论 -
Kconfig 与Makefile
内核源码树的目录下都有两个文档Kconfig(2.4版本是Config.in)和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。 在内核编译时,主M转载 2011-06-30 22:39:00 · 856 阅读 · 0 评论 -
代码风格(四)空格与空行
十、空格与空行 1、 空格与关键字 空格使用方式(主要)取决于它是用于函数还是关键字。大多数关键字后要加一个空格。 值得注意的例外是: sizeof、 typeof、alignof和__attribute__。 例如: s原创 2011-10-13 22:49:58 · 3249 阅读 · 0 评论 -
代码风格(五)标识符命名
十一、 标识符命名 标识符命名要清晰明了,可以使用完整的单词和易于理解的缩写。 1、单词缩写短的单词可以通过去元音形成缩写,较长的单词可以取单词中有意义的3个字母形成缩写。看别人的代码看多了就可以总结出一些缩写惯例,例如count写成cnt,block写成bl原创 2011-10-13 23:21:14 · 1096 阅读 · 1 评论 -
代码风格(一)注释、头文件、宏定义
做程序员已经两年多了,感觉代码风格很重要,所以决定抽点时间定制一下自己的代码风格。参考文档:http://learn.akae.cn/media/ch09.html代码风格的重要性:1、 代码风格是一个规范,编写代码的时候就有了规矩,有规矩应该是成熟的标志。原创 2011-10-11 22:54:41 · 2034 阅读 · 1 评论 -
代码风格(二)函数
八、函数风格 每个函数都应该设计得尽可能简单,简单的函数才容易维护。应遵循以下原则: 1、函数注释比较重要的函数定义上面必须加注释,说此函数的功能、参数、返回值、错误码等。 2、函数名执行函数就是执行一个动作,函数名最好以动宾结构短语组成,单词间用原创 2011-10-13 20:52:57 · 878 阅读 · 0 评论 -
代码风格(三)语块
九、语块1、代码行极限 – 80字符如果有行代码超过80字符,建议用折行。折行后的语句前加空行。 if( ( value_a > value_b ) && ( value_a > value_c ) && \ ( value_a > val原创 2011-10-13 21:57:37 · 678 阅读 · 0 评论 -
vim 拷贝与删除
vim 中 y 表示拷贝, d 表示删除, p 表示粘贴. 其中拷贝与删除是与光标移动命令结合的. yw 表示拷贝从当前光标到光标所在单词结尾的内容. y0 表示拷贝从当前光标到光标所在行首的内容. y$ 表示拷贝从当前光标到光标所在行尾的内容. yfa原创 2011-06-15 19:33:00 · 2839 阅读 · 0 评论 -
vim 插件命令
Needtrre,tto 打开Needtrreo 打开关闭文件或者目录t 在标签页中打开T 在后台标签页中打开! 执行此文件p 到上层目录P 到根目录K 到第一个节点J 到最后一个节点u 打开上层目录m 显示文件系统菜单(添加、删除、移动操作)? 帮助q 关闭 DoxygenToolki原创 2011-10-17 16:41:19 · 942 阅读 · 0 评论 -
vim 比较文件、修改二进制文件
1. 使用vim的比较模式打开两个文件: vim -d file1 file2或 vimdiff file1 file22. 如果已经打开了文件file1,再打开另一个文件file2进行比较: :vert diffsplit file2如果没有用vert命令,diffsplit则会分上下两个窗口。3. 如果已经用split方式打开了两个文件file1原创 2011-06-14 09:11:00 · 5170 阅读 · 0 评论 -
pthread_rwlock_t 接口解析
在使用的过程中,往往会有一些细节上的疑问,心中会有模棱两可的地方,然后自己做了试验,并记录下来。首先,我们先来看一下 pthread_rwlock_t 结构体的定义: struct { int __lock; unsigned int __nr_readers; unsigned int __readers_wakeup; unsign转载 2014-07-02 17:17:05 · 7530 阅读 · 0 评论