linux下信号量semaphore的应用
摘要:http://www.yuanma.org/data/2006/0721/article_1195.htm生产者线程用于往链表里添加节点,数个工作线程从链表取出节点并处理。对于一般的mutex_lock,mutex_unlock方式,如果这一段时间没有工作,那么工作线程将会不停的调用lock,unlock操作。而这样的操作毫无疑义。在这里系统给我们提供了另外一种同步机制,信号灯,Semaphore。信号灯其实就是一个计数器,也是一个整数。每一次调用wait操作将会使semaphore值减一,而如果semaphore值已经为0,则wait操作将会阻塞。每一次调用post操作将会使semaphor
阅读全文
Linux内核的ioctl函数学习2 - linux系统ioctl使用示例
摘要:http://www.linuxidc.com/Linux/2007-12/9623p3.htmThese were writed and collected by kf701,you can use and modify them but NO WARRANTY. Contact with me : kf_701@21cn.com程序1:检测接口的 inet_addr,netmask,broad_addr#include #include #include #include #include #include #include #include #include #include #incl
阅读全文
Fedora下Samba服务的搭建
摘要:一、安装samba服务 yum -y install samba二、配置smaba服务器编辑/etc/samba/smb.conf。 security = user; security = share passdb backend = tdbsam找到 Share Definitions, 注释掉所有的共享定义, 添加一个:[Fedora] comment = Fedora Samba path = /home/chen public = yes browseable = yes writable = yes write list = chen,...
阅读全文
perror()打印“ Address already in use ”的解决方法,key words:errno perror bind setsockopt
摘要:代码如下:if( bind(local_sock_fd,(struct sockaddr*)(&local_sock_addr),sizeof(struct sockaddr)) == -1){ perror("ERROR bind()"); return -1; }运行时发现终端打印出ERROR bind() :Address already in use转自:http://blogold.chinaunix.net/u2/69143/showart_1019104.html当客户端保持着与服务器端的连接,这时服务器端断开,再开启服务器时会出现:Address a
阅读全文
C语言中typedef的使用小结
摘要:Index:(一) typedef在ADT设计中的影响.(二) typedef使用: (1)定义一种类型的别名 (2)用在旧的C代码中简化struct (3)跨平台 (4)简化复杂(三) typedef的使用陷阱.格式: typedef old_type new_type, 例如:typedef unsigned int UNIT32;typedef char* PTRCHAR;typedef void (*pFunc)(void);typedef int ARRAY [N];(一) typedef在ADT设计中的影响.声明某个指针的别名:typedef struct node * list;
阅读全文
Fedora 14 开发环境 (update)
摘要:一)安装软件包以Fedora 14为例################## 与开发相关### GNU devel toolsyum -y install patch libtool autoconf automake### 词法、语法 生成器yum -y install flex bison################## devel library### ncurses 用于linux kernel 等 menuconfigyum -y install ncurses-devel zlib-devel################## 网络相关yum -y install sambay
阅读全文
linux下 select() 函数的用法小结
摘要:函数原型:int select(intmaxfdp,fd_set*readfds,fd_set*writefds,fd_set*errorfds,struct timeval*timeout);第一,struct fd_set可以理解为一个集合,这个集合中存放的是文件描述符(file descriptor),即文件句柄,当然Unix下任何设备、管道、FIFO等都是文件形式,全部包括在内,所以毫无疑问一个socket就是一个文件,socket句柄就是一个文件描述符。fd_set集合可以通过一些宏由人为来操作,比如清空集合FD_ZERO(fd_set *),将一个给定的文件描述符加入集合之中FD_
阅读全文
pthread_jion() , pthread_create() 导致的segmentation fault
摘要:下午调试程序的“segmentation fault”,先上代码:int main(){ printf("entering main() /n"); init_globals(); /*initialize global variable defined in main.c*/ init_iic(); init_spi(); if(init_sock() == -1){ exit(1); } sock_listen_tid = pthread_create(&sock_listen_tid,NULL,listen_thread,NULL); if( ...
阅读全文
从do-while 宏谈宏的展开
摘要:在代码中经常可以看到下面的宏定义:#define FOO(X) do { f(X); g(X); } while (0)#define FOO(X) if (1) { f(X); g(X); } else这里的while(0)结构看起来似乎没有意义, 下面是一个相反的例子, 假如不用do-while结构:#define FOO(x) f(x);g(x)if (condition)BAR(1);else;编译器将宏展开为:if (condition) foo(1); goo(1);else ;可以看到goo(1)脱离了if的控制。例2:加上{ }的情况呢#define BAR(x) {foo..
阅读全文
关键字 extern static const, 声明和定义的区别
摘要:Index: (一) extern在C语言中作声明; (二) static变量的作用域, C++中的静态成员; (三) const关键字在函数重载中的作用.(一)extern关键字首先,声明与定义的区别: 定义:编译器会为变量或函数分配内存 //如:int a=1; 声明:只是表明其存在,但没有分配内存这个过程。//如:int a; 带或带externextern的两个作用:(1)extern声明/定义变量和函数. 1.声明变量或函数, 例如extern int val; extern void fun (void); 在aaa.cpp 定义函数: void func(); 在bbb.cpp
阅读全文