- 博客(7)
- 资源 (3)
- 收藏
- 关注
原创 调试器原理之ptrace调用学习
其实很早以前就对调试器技术感兴趣了。以前玩板子的时候用了JTAG,当时我觉得这东西好神奇。前面我下载了一份GDB源码,可惜弄了几天都没有看出门道。昨天瞄了一眼《开源应用程序架构》,不出意外的看到了GDB。里面说在Linux下面调试器的功能主要都是靠ptrace调用实现的。我突然觉得有戏,感觉找到了点希望(不得不说,网上真心没找到GDB实现方面的资料,顶多是使用教程)。然后我就和ptrace干上了。
2014-11-26 16:24:05 2453
原创 putchar的线程安全
前面调用的stdio函数一般都是printf和fgets。这些函数都是一次读入或输出一串 数据。他们的操作是满足原子性的。ANSI C中同时还有putchar和getchar这样的函数。 在新版本的putchar和getchar都是有加锁操作的,用来保护缓冲区不被破坏。我开始 觉得这有点不好理解,以为单个字符原子性是可以保证的,其实不然。假设putchar用 如下的伪代码实现:
2014-11-25 11:01:18 686
原创 多线程程序中的stdio同步
在多线程程序中,stdio文件描述符是被各个线程共享的。如果多个线程需要进行stdio操作,那么stdio同步就是一个值得关注的问题了。为了实现stdio线程安全,flockfile和funlockfile调用就显得非常重要了。 在很多的情况下,一些stdio操作以不被中断的顺序是非常重要的。
2014-11-25 10:42:25 674
原创 多线程程序中的fork调用
多线程程序执行fork调用是一个比较复杂的问题。首先fork调用的行为大概是复制一个和父进程一样的子进程,然后两个进程以不同的值返回。理论上,父子进程应该是非常相似的。fork调用在单线程上是非常容易理解的,在多线程上就不太好理解了。在多线程程序里存在着多个执行流,换句话说,就是fork()调用点只是一个程序的一个并行执行分支而已。说了这么多,其实真相非常简单。下面是《POSIX多线程程序设计》中
2014-11-24 12:57:43 1885
原创 tinyhttpd在Linux编译
前面在博客园里看到了的《程序员最值得关注的10个C开源项目》。其中有一个tinyhttpd的项目,是一个小型的http服务器实现。以前也粗略的看过tomcat的实现,不过没有深入很多,比较代码量在那里。而这个tinyhttpd项目,服务器代码只有区区500行,确实适合初学者练手。不过这个项目并不能直接在Linux上编译运行。它本来是在solaris上实现的,貌似在socket和pthread的实现
2014-11-12 01:03:53 7976 5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人