Unix环境高级编程(第三版) 代码编译本文地址:http://blog.csdn.net/caroline_wendy时间:2014.10.21. 下载代码:http://www.apuebook.com/code3e.html2. 安装依赖库:sudo apt-get install libbsd-dev 3. 进入下载目录make4. 复制头文件和动态链接库sudo cp ./include...
分类:
系统相关 时间:
2014-10-03 00:18:43
阅读次数:
467
APUE信号-程序汇总
最近重看APUE,发现对于很多程序的要领还是没有完全理解,所以梳理下便于查看,而且有很多值得思考的问题。
程序清单10- 1 捕获 SIGUSR1 和 SIGUSR2的简单程序
#include "util.h"
static void sig_usr(int);
int
main(void){
if(signal(SIGUSR1,...
分类:
其他好文 时间:
2014-10-02 14:26:03
阅读次数:
162
在看APUE习题10.5的时候提示了这篇文章,讲的很清晰,设计也很巧妙,所以把原文放在这里,值得自己去实现。
Title: Implementing Software Timers
By: Don Libes
Originally appeared in the Nov. 1990 "C User's Journal" and is also reprinted as C...
分类:
其他好文 时间:
2014-10-02 10:21:22
阅读次数:
169
首先是编译生成libapue.a的库文件。按照readme的说法很简单改个目录make一下就好,但是在centos下还是有错。通过下面这篇博文>解决.然而由于apue的例程的命名均采用fig1.3这种格式,当编译时gcc -o myls fig1.3 liabapue.a时,编译器不认识文件。。。所...
分类:
其他好文 时间:
2014-09-30 21:28:20
阅读次数:
132
进行命令处理的典型程序框架
今天翻看APUE中非局部goto的时候,看到了这个处理命令行的代码框架,所以就想简单的实现一个功能进行调试,花了大概2个小时,才完全看的过去,记录下,虽然看起来还是不够层次清晰。里面牵扯到的知识点注意有:业务要学会分层;枚举值和对应字符串的转换;字符串的解析(分词)。
#include "util.h"
void do_line(ch...
分类:
其他好文 时间:
2014-09-26 20:35:48
阅读次数:
191
线程同步
同属于一个进程的不同线程是共享内存的,因而在执行过程中需要考虑数据的一致性。
假设:进程有一变量i=0,线程A执行i++,线程B执行i++,那么最终i的取值是多少呢?似乎一定是i=2;其实不然,如果没有考虑线程同步,i的取值可能是1.我们先考虑自加操作的过程:a,首先将内存中i的值copy到寄存器;b,对寄存器中i的copy进行自加;c,将寄存器中自加的结...
分类:
编程语言 时间:
2014-09-25 14:13:09
阅读次数:
297
守护进程重读配置文件示例
重读APUE,对守护进程有了更加深刻的理解,特别是相应的编程规则和应用场景。对于为什么要fork两次,日志设施的用法,信号的处理方法都有了更加清晰的认识。通常的应用场景是,守护进程在收到一个SIGHUP信号的时候重新读取配置文件,而不需要停止。下面是运行APUE书中这个实例的过程。
首先主要代码为(reread.c):
#incl...
分类:
其他好文 时间:
2014-09-24 20:33:52
阅读次数:
245
线程标识
线程由线程号进行标识。线程号仅在线程所属的进程环境中有效。也就是说属于不同进程的两个线程可能线程号一样。
线程标识用结构体pthread_t tid表示。与线程Id相关的函数如下:
比较两个线程ID:
#include
int pthread_equal(pthread_t tid1,pthread_t tid2);
...
分类:
编程语言 时间:
2014-09-23 12:56:54
阅读次数:
249
首先简述下几个概念的关系:
我们通过信号集建立信号屏蔽字,使得信号发生阻塞,被阻塞的信号即未决信号。
信号集:
信号集:其实就是一系列的信号。用sigset_t set表示。
数据类型:sigset_t 类似于整型(位数可能超过整型,因而不能用整型表示)。
我们一般在sigprocmask()等函数中使用信号集,用于创建一系列进程要阻塞的信号,告诉内核不允...
分类:
其他好文 时间:
2014-09-19 12:09:05
阅读次数:
252
首先说明:现在大部分Unix系系统如Linux都已经实现可靠信号。
1~31信号与SIGRTMIN-SIGRTMAX之间并不是可靠信号与不可靠信号的区别,在大多数系统下他们都是可靠信号。
只不过:
1~31信号
——不支持排队,为普通信号。
SIGRTMIN-SIGRTMAX信号 ——支持排队,实时信号...
分类:
其他好文 时间:
2014-09-17 16:55:13
阅读次数:
164