Linux 程序设计第四版
yel617
这个作者很懒,什么都没留下…
展开
-
第十一章 进程和信号(一)
我们可以通过调用fork来创建一个新进程。这个系统调用会复制当前进程,在进程表中创建一个实体,而且与当前进程具有相同的属性。新进程与原始进程几乎是相同的,执行相同的代码,但是具有其自己的数据空间,环境与文件描述符。 #include原创 2011-12-08 18:42:39 · 772 阅读 · 0 评论 -
第十一章 进程和信号(二)
信号 信号是UNIX与Linux系统响应某些条件而产生的一个事件。接收到该信号的进程会相应地采取一些行动。我们用术语(raise)表示一个信号的产生,使用术语(catch)来表示接收到一个信号。信号是由于某些错误条件而生成的,如内存段冲突、浮点处理器错误或非法指令。他们由 shell 和终端处理器生成来引起中断,它们还可以作为在进程间传递消息或修改行为的一种方式,明确地由一个进原创 2011-12-20 17:30:07 · 1548 阅读 · 0 评论 -
第十二章 POSIX 线程(一)
在一个程序中的多个执行线路就叫做线程(thread)。更准确的定义是:线程是一个进程内部的一个控制序列。 线程有一套完整的与其相关的函数库调用,它们中的绝大多数函数名都是以 pthread_ 开头,为了使用这些函数库调用,我们必须定义宏 _PEENTRANT,在程序中包含头文 件 pthread.h ,并且在编译程序的时需要用选项 -lpthread 来链接线程库。 pthr原创 2011-12-21 17:30:42 · 673 阅读 · 0 评论 -
第十一章 进程和信号(三)
一个健壮的信号接口 我们已经对用 signal 和其相关函数来生成和捕获信号做了比较深入的介绍,因为它们在传统的 Unix 编程中很常见。但 X/Open 与 Unix 规范推荐了一个更新和更健壮的信号编程接口:sigaction 。它的定义如下所示: #include int sigaction ( int sig, const struct sigaction *a原创 2011-12-21 14:57:49 · 758 阅读 · 0 评论 -
第十二章 POSIX 线程(二)
信号量 信号量是一个特殊类型的变量,它可以被增加或减少,但对其的关键访问被保证是原子操作,即使在一个多线程程序中也是如此。这意味着若果一个程序中有两个(或更多)的线程试图改变一个信号量的值,系统将保证所有的操作都将依次进行。但如果是普通变量,来自同一程序中的不同线程的冲突操作导致的结果将是不确定的。 信号量--二进制信号量,它只有 0 和 1 两种取值。还有一种更通用原创 2011-12-27 19:38:03 · 668 阅读 · 0 评论 -
第十二章 POSIX 线程(三)
用互斥量进行同步 另一种用在多线程程序中的同步访问方法是使用互斥量。它允许程序员锁住某个对象,使得每次只有一个线程访问它。为了控制对关键代码的访问,必须在进入这段代码之前锁住一个互斥量,然后在完成操作之后解锁它。 #include int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t原创 2012-01-04 21:57:02 · 686 阅读 · 0 评论