
c/c++
airu
这个作者很懒,什么都没留下…
展开
-
一个从32位机器移植到64位机器时的c问题
最近工作中遇到了一个讨厌的问题,在32位机器上运行的好好的,但是在64位机器上,出现了诡异的 Segmental fault。 于是调试分析,一切似乎都很正常。开始怀疑是否由于使用了变参。因为proc不支持...形式的变参,所以,不得已自己写了一个类似printf这样的变参,和proc程序分开。这个函数如下: const char * get_fmt_str(const char ...原创 2011-09-14 16:46:07 · 220 阅读 · 0 评论 -
管道管道管道
Unix的管道真的是很方便,我们经常这样用: [code="shell"]$ls -l|wc -l[/code] 用于统计一个目录下的文件数。这里如果详细说起来,涉及了进程组,会话的概念。当然最显眼的就是符号 | ,这是就是管道,下面我们说说上面的这句shell如何用c语言来写。为了更能说明问题,我们把结果写入一个文件中。 [code="c"] #include #include...原创 2011-12-27 00:16:43 · 223 阅读 · 0 评论 -
初识Linux线程
Linux的线程也是曲折的,2.4内核的时候居然线程使用进程来实现。不过2.6内核我是没看到有什么诡异的了。线程是线程,进程是进程。 为什么要线程呢? 线程的切换,不需要切换进程的上下文,比如N多寄存器值的保存。所以是轻量级的。速度也更快,但是同时也带来很多问题,比如同步。 现在让我们来简单看看Linux的线程吧。 下面的程序,通过多线程,并且互斥来对一个变量累加。 [code="c...原创 2011-12-28 00:19:03 · 125 阅读 · 0 评论 -
线程队列
队列很常见,但是如果我们考虑在多线程环境中,那么可能就要注意同步互斥了。 这里使用读写锁,可以在读的时候不需要锁住整个队列。但是添加到队列就必须用互斥的锁了。 这里就介绍一下读写锁。pthread_rwlock_t lock定义一个读写锁lock,同样注意要初始化。 用 pthread_rwlock_init(&lock) 来初始化 lock。 下面来看一个列子,使用双向链表实现队列。...2011-12-28 23:24:15 · 119 阅读 · 0 评论