随笔分类 -  Linux

摘要:为什么选择多线程?而不是多进程?比起多进程来说,线程间通信简单(全局变量就可以了),而多进程之间的通信相对而言更繁琐一些,呵呵...我们的问题如何产生的?问题的根本原因是什么?事情是这样的,模块之间需要通信,我们用了openwrt的开源代码ubus做消息转发在我们的每个需要通信的模块中创建了一个线程... 阅读全文
posted @ 2015-09-09 14:25 xiaokuang 阅读(4134) 评论(1) 推荐(1)
摘要:kuang:~$ tr --helpUsage: tr [OPTION]... SET1 [SET2]Translate, squeeze, and/or delete characters from standard input,writing to standard output. -c, -... 阅读全文
posted @ 2015-07-24 20:01 xiaokuang 阅读(291) 评论(0) 推荐(0)
摘要:Linux有各种XXtables, 比如 iptables ebtables arptables用户空间:iptables ebtables arptables这些用户层的工具会调用setsockopt/getsockopt来和内核通信nf_sockopts是在iptables进行初始化时通过nf_... 阅读全文
posted @ 2015-07-13 16:19 xiaokuang 阅读(3517) 评论(0) 推荐(0)
摘要:共享内存时IPC形式中最快的一种。POSIX 共享内存posix.1提供了两种在无亲缘关系的进程间共享内存的方式(1)内存映射文件:由open函数打开一个文件,由mmap函数把得到的描述符映射到当前进程地址空间中。(2)共享内存区对象:由shm_open打开一个Posix.1 IPC名字(通常是文件... 阅读全文
posted @ 2015-07-08 09:25 xiaokuang 阅读(301) 评论(0) 推荐(0)
摘要:Posix semaphore有名信号量/* sem_open - initialize and open a named semaphore */#include /* For O_* constants */#include /* For mode cons... 阅读全文
posted @ 2015-07-07 11:38 xiaokuang 阅读(359) 评论(0) 推荐(0)
摘要:进程间的互斥,我们可以让这些进程共享某个内存区(mmap实现),然后在该共享内存区中使用某种类型的同步变量但是,fcntl记录上锁往往更容易使用。#include #include int fcntl(int fd, int cmd, ... /* struct flock *arg */ );st... 阅读全文
posted @ 2015-07-07 11:22 xiaokuang 阅读(325) 评论(0) 推荐(0)
摘要:读写锁的分配规则如下:1. 只要没有线程持有某个指定的读写锁用于写,那么任意数目的线程可以持有该读写锁用于读;2. 仅当没有线程持有某个指定的读写锁用于读或者用于写,才能分配读写锁用于写。这样的访问方式也称为共享-独占上锁(shared-exclusion)那么我想到了这样一个场景:线程A要写数据,... 阅读全文
posted @ 2015-07-07 11:13 xiaokuang 阅读(367) 评论(0) 推荐(0)
摘要:线程范围:同一个进程内的多个线程访问一些全局变量时,需要保护好临界区,保证不产生脏数据Linux 中的互斥锁#include pthread_mutex_t fastmutex = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t recmutex = PTHREA... 阅读全文
posted @ 2015-07-03 15:59 xiaokuang 阅读(453) 评论(0) 推荐(0)
摘要:管道和FIFO是字节流,没有消息边界。1. Posix 消息队列/* mq_open - open a message queue */#include /* For O_* constants */#include /* For mode constants ... 阅读全文
posted @ 2015-07-01 15:28 xiaokuang 阅读(505) 评论(0) 推荐(0)
摘要:1)判断表达式iftest (表达式为真)iftest!表达式为假test表达式1 –a 表达式2 两个表达式都为真test表达式1 –o 表达式2 两个表达式有一个为真2)判断字符串test–n 字符串 字符串的长度非零test–z 字符串 ... 阅读全文
posted @ 2015-06-28 12:39 xiaokuang 阅读(434) 评论(0) 推荐(0)
摘要:$@ 表示规则中的目标文件集。在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。$< 依赖目标中的第一个目标名字。如果依赖目标是以模式(即"%")定义的,那么"$<"将是符合模式的一系列的文件集。注意,其是一个一个取出来的。$% 仅当目标是函数库文件中,表示规则中的目标成员... 阅读全文
posted @ 2015-06-25 17:46 xiaokuang 阅读(247) 评论(0) 推荐(0)
摘要:ifeq($(ABC), XXX)CFLAGS += -DABCendif注意: 逗号和XXX之间必须有一个空格更需要注意的是: ifeq中的XXX后面不能带空格,如果XXX后面带了一个空格,那空格和XXX会被认为是一个整体export ABC = XXX[ ][ ] 这里用[ ]表示一个空格... 阅读全文
posted @ 2015-06-25 13:01 xiaokuang 阅读(8173) 评论(0) 推荐(0)
摘要:持续更新...现代的CPU包含了自动把虚拟地址转换成物理地址的硬件电路所有的UNIX操作系统都将RAM划分为两部分:1. 第一部分:若干兆字节专门用于存放内核映像(内核代码+内核静态数据)2. 第二部分用于: a. 满足内核对缓冲区、描述符和其他动态内核数据结构的请求 b. 满足进程对一般内... 阅读全文
posted @ 2015-06-04 19:49 xiaokuang 阅读(288) 评论(0) 推荐(0)
摘要:Ubuntu 14.04 32bit先直观地认识一下ps -eo pid,comm,cmd PID COMMAND CMD 1 init /sbin/init 2 kthreadd [kthreadd] 3 ksoftirqd/... 阅读全文
posted @ 2015-06-04 14:39 xiaokuang 阅读(1572) 评论(0) 推荐(0)
摘要:As we all know:TCP连接,主动关闭的一方在发出最后一个ACK后,TCP状态机进入 TIME_WAIT为啥要有这么个状态呢?作用有二:1. 防止上一次连接中的包,迷路后重新出现,影响新连接(经过2MSL,上一次连接中所有的重复包都会消失)2. 可靠性保证,主动关闭方发送的最后一个ACK... 阅读全文
posted @ 2015-06-03 20:53 xiaokuang 阅读(457) 评论(0) 推荐(0)