- 博客(16)
- 收藏
- 关注
原创 Linux Signal (8): sigsetjmp和siglongjmp
进程部分介绍过了setjmp和longjmp函数, 这两个函数在跳转时会带信号屏蔽字跳转, 在信号处理程序(hanlder)中使用longjmp会导致后来产生的这种信号被屏蔽.POSIX.1 也没有具体说明setjmp和longjmp对信号屏蔽字的作用, 而是定义了两个新函数: sigsetjmp和siglongjmp.1. 原型:#include setjmp.h>int sig
2007-09-28 11:12:00 13672 4
原创 Linux Signal (7): sigaction
sigaction函数是用作检查/修改与指定信号相关联的处理动作. 在UNIX早期版本中使用signal, 后来改用了sigaction, 可见它的功能比signal要强大. 另外, signal函数也是可以用sigaction实现的.1. sigaction原型:#include signal.h>int sigaction(int signo, const struct sigac
2007-09-27 17:02:00 6976 4
原创 Linux Signal (6): 信号屏蔽字
1. 概念:信号屏蔽字就是进程中被阻塞的信号集, 这些信号不能发送给该进程, 它们在该进程中被"屏蔽"了. 后面我们会提到, 实际上它们是被阻塞了.2. 信号屏蔽函数:#include signal.h>int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict oset);成功则返回0,
2007-09-25 15:46:00 13355 2
原创 Linux Signal (5): 信号集
信号集给我们提供了一个能表示多个信号的是数据类型(sigset_t), 它将在sigprocmask, sigpending, sigsuspend之类的函数中用到, 这些函数我会在以后的文章中介绍.1. 信号集相关函数:#include signal.h>int sigemptyset(sigset_t *set);成功则返回0, 出错则返回-1. 这个函数用作初始化set指
2007-09-25 13:05:00 14994
原创 Linux Signal (4): alarm和pause
1. alarm函数:alarm函数是设置一个计时器, 在计时器超时的时候, 产生SIGALRM信号. 如果不忽略或捕捉此信号, 它的默认操作是终止调用该alarm函数的进程.原型如下:#include unistd.h>unsigned int alarm(unsigned int seconds);返回0或余留秒数说一下alarm的返回值问题, 每个进程只能有一个ala
2007-09-25 11:21:00 10876
原创 Linux Signal (3): kill和raise
1. 函数说明:kill和raise是用来发送信号的:kill把信号发送给进程或进程组;raise把信号发送给(进程)自身.他们的原型如下:#include signal.h>int kill(pid_t pid, int signo);int raise(int signo);成功则返回0, 出错则返回-1 从原型上可以看出, raise函数是可以通过kill实现
2007-09-24 16:23:00 9476
原创 makefile的写法
makefile是一种描述依赖关系的文件, 它主要描述的是整个工程编译规则, 同时也给工程的维护提供很大的方便. 这在大型工程中非常实用. 在写好makefile之后, 只需要在命令行输入make命令, 工程就按照既定的makefile规则进行"自动化编译".1. 编译(compile)和链接(link):我们通常所说的编译一般来说指的是编译和链接这两个过程的总称. 不管是什么类型的源
2007-09-17 17:09:00 1829
转载 Linux的历史
简单说,linux就是跟windows一样,是一种电脑操作系统.可以在包括个人电脑在内的各种计算机上使用。它使用的版权许可证是支持软件的自由免费、开放源代码的GNU通用公共许可证GPL。多年来,Linux获得了广大黑客、计算机爱好者、科研人员以及普通用户的喜爱,目前已经广泛用于计算机行业的各领域,包括了个人电脑、服务器、工作站以及各类智能嵌入式系统等等.linux的历史可以上溯到60年代末,美国贝
2007-09-14 15:33:00 1166
转载 Linux的主要发行版
Linux 发行版众多,可以用多如牛毛来形容。曾经见到有人收集到了 300 多个 Linux 发行版。实际上,流传于世的 Linux发行版数目可能还远不止于此。这么多的 Linux 发行版,对打算从其他系统转换过来的用户来说可能会感到困惑;而即便是忠实的 Linux用户也没有时间和精力去挨个尝试。对此,DistroWatch 从众多 Linux 发行版中遴选出 10 个,无疑是一种很好的参考。sc
2007-09-14 15:31:00 1166
原创 Linux Signal (2): signal函数
1. 原型:#include signal.h>void (*signal(int signo, void (*func)(int))(int);成功则返回该信号以前的处理配置, 出错则返回SIG_ERR.参数说明: signo: 信号名, 如SIGINT. func: 对应signo的信号处理函数的函数名, 这个函数没有返回值, 有一个整型参数, 这是捕捉
2007-09-14 14:43:00 6009
原创 Linux Signal (1): 基本概念
1. 信号是软件中断:信号提供了一种处理异步事件的方法. 每个信号都有一个名字, 他们以SIG开头, 如SIGALRM是闹钟信号, 当由alarm函数设置的计时器超时后产生此信号, 然后由SIGALRM的信号处理函数接管处理, 处理之后返回调用alarm函数的应用程序中.2. 信号编号:在头文件中, 信号都用宏定义为正整数的信号编号, 不存在编号为0的信号, kill函数对编号为0
2007-09-14 10:51:00 6345 1
原创 一个无知人对Linux的挑衅
就在刚才, 准备下班的时候, 在CSDN看到一个帖子:==============================================================Linus Torvalds的成功是政治因素而不是技术因素的结果。 换句话,Torvalds是领袖,而非大师。 L粉们都是追星族。 Linus Torvalds以为他自己如何如何了? 飘飘然了? 一个好一点儿的计算
2007-09-12 19:19:00 1458 4
原创 中断和异常
处理器的速度和外围硬件设备的速度往往不在一个数量级上, 因此, 如果Linux内核采取让处理器向硬件发出一个请求, 然后专门等待回应, 这种办法显然不好. 硬件响应慢, 因此内核需要在这段时间内处理其他事务, 等到硬件真正完成了请求的操作之后, 内核再回来对它进行处理. 要实现这种功能, 有两种方法: 轮询和中断. 轮询(polling)可以让内核定期对设备的状态进行
2007-09-11 14:08:00 2516 8
转载 系统调用
1什么是系统调用 系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。 从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传
2007-09-04 10:05:00 1521
转载 AT&T汇编语言与GCC内嵌汇编简介
AT&T汇编语言与GCC内嵌汇编简介1 AT&T 与INTEL的汇编语言语法的区别1.1大小写1.2操作数赋值方向1.3前缀1.4间接寻址语法1.5后缀1.6指令2 GCC内嵌汇编2.1简介2.2内嵌汇编举例2.3语法2.3.1汇编语句模板2.3.2输出部分2.3.3输入部分2.3.4限制字符2.3.5破坏描述部分2.4GCC如何编译内嵌汇编代码3后记本节先介绍AT&T汇编语言语法与INTEL汇编
2007-09-03 21:30:00 1152 2
原创 AT&T asm
一、AT&T 格式Linux 汇编语法格式 在 AT&T 汇编格式中,寄存器名要加上 % 作为前缀;而在 Intel 汇编格式中,寄存器名不需要加前缀。在 AT&T 汇编格式中,用 $ 前缀表示一个立即操作数;而在 Intel 汇编格式中,立即数的表示不用带任何前缀。例如: 寄存器和立即数
2007-09-03 18:30:00 3343
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人