linux环境编程
文章平均质量分 86
sdzz_yxw
这个作者很懒,什么都没留下…
展开
-
进程间通信——管道
用管道来进行进程间通信是通过pipe函数,管道只能支持父子进程或有公共祖先的进程之间通信。pipe函数原型:#include int pipe (int fd[2]);该函数被调用后,会通过fd数组传出两个文件描述符fd[0]和fd[1],其中fd[0]为读而打开,fd[1]为写而打开。从fd[0]中读的数据,就是往fd[1]中写的数据。当父进程调用fork后,子进程继承了父原创 2013-05-27 20:35:41 · 567 阅读 · 0 评论 -
多线程队列
利用条件变量实现的多线程队列pqueue,原理:1. 在pqueue结构里定义了两个条件变量m_full和m_free,两个计数器m_freewait和m_fullwait。2. 生产者线程向队列插入数据前,判断队列是否满,如果满则让该线程等待在m_full,等待消费者线程从队列取元素,计数器m_fullwait自增,用来表示等待m_full的生产者线程数。3. 生产者线程向队列中原创 2013-06-02 20:35:27 · 846 阅读 · 0 评论 -
多线程练习题
#include #include #include #define THREAD_NUM 3static unsigned int g_num = 0;static pthread_t g_tarr[THREAD_NUM];static pthread_cond_t g_cond;static pthread_mutex_t g_mutex;void* thn_t (voi原创 2013-07-15 14:35:18 · 688 阅读 · 0 评论 -
玩具宏
#include #define STRING_1(_VAL) #_VAL#define STRING(_VAL) STRING_1(_VAL)#define LINK_1(A,B) A##B#define LINK(A,B) LINK_1(A,B)#define LINK_A_1(A,B,C) A##B##C#define LINK_A(A,B,C) LINK_A_1(A,B,原创 2014-05-16 16:52:51 · 662 阅读 · 0 评论 -
树和森林的孩子兄弟结构
linux内核中多处用到层次链表结构来组织一些相同类型的数据。如task_struct,dentry,vfs_mount等,结构图如下: 实现原理很简单,主要有三个字段:parent:指向父结构的指针children:子结构链表的头sibling:将自己连接到父节点的子结构链表中。结构定义如下:typedef struct _list { struc原创 2013-07-16 10:59:16 · 867 阅读 · 0 评论