摘要: mickole@test:~/ctest/05gdb$ gdb simple //开始gdb调试 GNU gdb (Ubuntu/Linaro 7.4-2012.04-0ubuntu2.1) 7.4-2012.04 Copyright (C) 2012 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3... 阅读全文
posted @ 2013-09-29 16:47 mickole 阅读(1397) 评论(0) 推荐(0) 编辑
摘要: timerfd是Linux为用户程序提供的一个定时器接口。这个接口基于文件描述符,通过文件描述符的可读事件进行超时通知,所以能够被用于select/poll的应用场景。 一,相关操作函数 #include int timerfd_create(int clockid, int flags); int timerfd_settime(int fd, int flags, const st... 阅读全文
posted @ 2013-08-16 12:53 mickole 阅读(18052) 评论(0) 推荐(2) 编辑
摘要: #include #include //jmp_buf:数组,保存栈信息即运行环境jmp_buf buf;double Divide(double a, double b){if (b == 0.0){longjmp(buf, 1); // throw}elsereturn a / b;}//setjmp保存当前栈信息,成功返回0,当执行到longjmp时,//恢复栈信息即跳转到setjmp... 阅读全文
posted @ 2013-08-14 22:10 mickole 阅读(1469) 评论(1) 推荐(0) 编辑
摘要: 在头文件"execinfo.h"中声明了三个函数用于获取当前线程的函数调用堆栈。 #include int backtrace(void **buffer, int size); char **backtrace_symbols(void *const *buffer, int size); void backtrace_symbols_fd(void *const *buffer... 阅读全文
posted @ 2013-08-08 21:09 mickole 阅读(30207) 评论(0) 推荐(2) 编辑
摘要: 一,匿名管道PIPE局限性 管道的主要局限性正体现在它的特点上: 只支持单向数据流; 只能用于具有亲缘关系的进程之间; 没有名字; 管道的缓冲区是有限的(管道制存在于内存中,在管道创建时,为缓冲区分配一个页面大小); 管道所传送的是无格式字节流,这就要求管道的读出方和写入方必须事先约定好数据的格式,比如多少字节算作一个消息(或命令、或记录)等等; 如果... 阅读全文
posted @ 2013-07-16 11:05 mickole 阅读(9198) 评论(0) 推荐(0) 编辑
摘要: 一,管道读写规则 当没有数据可读时 O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。 O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。 当管道满的时候 O_NONBLOCK disable: write调用阻塞,直到有进程读走数据 O_NONBLOCK enable:调用返回-1... 阅读全文
posted @ 2013-07-15 23:58 mickole 阅读(8280) 评论(1) 推荐(1) 编辑
摘要: 一,什么是管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 数... 阅读全文
posted @ 2013-07-15 22:01 mickole 阅读(6362) 评论(0) 推荐(0) 编辑
摘要: 一,三种时间结构 time_t://seconds struct timeval { long tv_sec; /* seconds */ long tv_usec; /* microseconds */ }; struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ ... 阅读全文
posted @ 2013-07-15 20:59 mickole 阅读(5353) 评论(0) 推荐(0) 编辑
摘要: 一些IO系统调用执行时, 如 read 等待输入期间, 如果收到一个信号,系统将中断read, 转而执行信号处理函数. 当信号处理返回后, 系统遇到了一个问题: 是重新开始这个系统调用, 还是让系统调用失败?早期UNIX系统的做法是, 中断系统调用, 并让系统调用失败, 比如read返回 -1, 同时设置 errno 为 EINTR中断了的系统调用是没有完成的调用, 它的失败是临时性的, ... 阅读全文
posted @ 2013-07-15 19:44 mickole 阅读(5789) 评论(0) 推荐(1) 编辑
摘要: 一,sigaction() #include int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact)); sigaction函数用于改变进程接收到特定信号后的行为。该函数的第一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号(为这两个信号定义自己的处理函... 阅读全文
posted @ 2013-07-15 19:23 mickole 阅读(14953) 评论(1) 推荐(6) 编辑