linux
zuxi
技术狂人
展开
-
fclose(stdout)和close(1)的区别
在论坛里有人问【发现close(1)和fclose(stdout)效果并不一样,为什么?】 ,勾起了我的好奇心,于是研究了一把,记录一下。#include #include #include #include #include #include #include int main(int argc, char *argv[]){ int fd = open("/dev原创 2015-02-03 09:26:16 · 9736 阅读 · 5 评论 -
Linux内核模块Makefile一个新手容易犯的错
又是受csdn bbs中一个帖子的启发,发现这个问题我之前也遇到过,所以就深入研究了一下。以下是文件结构:root@jusse ~/develop/kernel_module/helloworld# tree.├── hello.c├── Makefile├── mymax.c└── mymax.h0 directories, 4 fileshello.c:#include原创 2015-03-29 20:43:30 · 9101 阅读 · 2 评论 -
Linux线上系统程序debug思路及方法
很多程序长期在线上系统跑着,可能跑着跑着就coredump了,而这种bug比较难复现,这个问题估计困扰不少同行朋友,这里记录一下我的一些思路,如有不对之处,欢迎指正。1、coredump文件 这个方法很基础了,相信大家都知道,具体步骤如下:ulimit -c unlimitedulimit -c unlimited' >> /etc/profileservice a原创 2015-03-31 01:22:58 · 2632 阅读 · 0 评论 -
进程异常退出导致死锁的解决办法
最近碰到这么一个问题:程序先获得锁,然后进行一些操作,操作完成之后再把锁释放掉,然而在获得锁之后进行的一些操作中可能导致程序异常退出(比如段错误),可以看出还没有来得及把锁释放进程就蹦掉了,从而导致这个锁长期没有被释放,其他想尝试获取锁的进程都会失败。 这个问题在多进程模型中很容易出现,下面是一个比较简单的多进程模型程序例子:dead_lock.c:#include #i原创 2015-03-31 10:31:50 · 7287 阅读 · 4 评论 -
源码剖析signal和sigaction的区别
这两个函数都是Linux下注册信号处理函数有关,但是它们的区别一般我们都是从书上、网上、man手册得知,要想对它们的区别了然于胸,源码剖析才是彻底的方法。先来看这两个函数的区别和实验:1、signal比sigaction简单,但signal注册的信号在sa_handler被调用之前把会把信号的sa_handler指针恢复,而sigaction注册的信号在处理信号时不会恢复sa_handle原创 2015-04-01 22:08:51 · 9245 阅读 · 4 评论 -
ldns老版本隐藏得比较深的bug
问题: 我在nginx中fork出一个进程来专门做DNS解析的工作,在本地开发环境中一切正常,而在线上服务器环境中这个进程就不定期的死掉重启,而且还不太容易复现。排查: 直接在线上服务器开启coredump,让linux帮忙把进程挂掉时的core文件保存下来,再用gdb分析,后来如愿得到core文件了,用gdb调试,从调用堆栈来看,是死在glibc的_int原创 2015-04-08 00:58:08 · 1375 阅读 · 0 评论 -
Cavium SSL加速卡驱动移植到Ubuntu
因为cavium ssl加速卡的驱动指定的系统是Fedora,而我们的系统是Ubuntu,所以肯定要移植了,看一下Release_Notes.txt里面的Supported Features: Supported Features ================== System architecture ------------------- - 32/64原创 2015-05-21 18:14:53 · 4716 阅读 · 9 评论