排序:
默认
按更新时间
按访问量

UNIX环境编程学习笔记(28)——多线程编程(三):线程的取消

1 取消线程 pthread 提供了pthread_cancel 函数用于请求取消同一进程中的其他线程。 #include int pthread_cancel(pthread_t tid); 返回值:若成功则返回0,否则返回错误编码 pthread_cancel 调用...

2017-09-05 20:22:17

阅读数:85

评论数:0

UNIX环境编程学习笔记(27)——多线程编程(二):控制线程属性

1 线程属性概括 POSIX 线程的主要属性包括 scope 属性、detach 属性、堆栈地址、堆栈大小、优先级。在头文件 pthread.h 中定义了结构体pthread_attr_t 来记录线程的属性。 在创建线程的函数pthread_create 的第二个参数 attr 就是一...

2017-09-05 17:50:12

阅读数:166

评论数:0

UNIX环境编程学习笔记(26)——多线程编程(一):创建和终止线程

在进程控制三部曲中我们学习了进程的创建、终止以及获取终止状态等的进程控制原语。线程的控制与进程的控制有相似之处,在表 1中我们列出了进程和线程相对应的控制原语。 表 1: 进程原语和线程原语的比较 进程原语 线程原语 描述 fork pthrea...

2017-09-05 17:09:55

阅读数:154

评论数:0

UNIX环境编程学习笔记(25)——信号处理进阶学习之 sigaction 函数

sigaction 函数跟 signal 函数一样,用于设置信号处理函数。此函数是用于取代 UNIX 早期版本使用的 signal 函数。UNIX 早期版本的 signal 函数在捕获到一个信号之后,就会自动将该信号的处理动作恢复为默认处理动作。于是,如果我们希望注册的信号处理函数长期生效,则需要...

2017-09-05 16:43:56

阅读数:129

评论数:0

UNIX环境编程学习笔记(24)——信号处理进阶学习之信号集和进程信号屏蔽字

1 信号传递过程 信号源为目标进程产生了一个信号,然后由内核来决定是否要将该信号传递给目标进程。从信号产生到传递给目标进程的流程图如图 1 所示, 图 1: 信号产生、传递到处理的流程图 进程可以阻塞信号的传递。当信号源为目标进程产生了一个信号之后,内核会执行依次执行下面...

2017-09-05 16:11:13

阅读数:140

评论数:0

UNIX环境编程学习笔记(23)——信号处理初步学习

1 信号的概念 维基百科中关于信号的描述是这样的: 在计算机科学中,信号(英语:Signals)是 Unix、类 Unix 以及其他 POSIX 兼容的操作系统中进程间通讯的一种有限制的方式。它是一种异步的通知机制,用来提醒进程一个事件已经发生。当一个信号发送给一个进程,操作系统中断了...

2017-09-05 09:15:16

阅读数:152

评论数:0

UNIX环境编程学习笔记(22)——进程管理之system 函数执行命令行字符串

ISO C 定义了 system 函数,用于在程序中执行一个命令字符串。其声明如下, #include int system(const char *cmdstring); system 函数在其实现中调用了 fork、exec 和 waitpid 函数。system 函数调用...

2017-09-05 08:40:49

阅读数:130

评论数:0

UNIX环境编程学习笔记(21)——进程管理之获取进程终止状态的 wait 和 waitpid 函数

当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号。父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序)。对于这种信号的系统默认动作是忽略它。 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态。那么,...

2017-09-04 18:12:59

阅读数:104

评论数:0

UNIX环境编程学习笔记(20)——进程管理之exec 函数族

在文档“进程控制三部曲”中,我们提到 fork 函数创建子进程之后,通常都会调用 exec 函数来执行一个新程序。调用 exec 函数之后,该进程就将执行的程序替换为新的程序,而新的程序则从 main 函数开始执行。 UNIX 提供了 6 种不同的 exec 函数供我们使用。它们的原型如下所...

2017-09-04 17:29:13

阅读数:101

评论数:0

UNIX环境编程学习笔记(19)——进程管理之fork 函数的深入学习

在“进程控制三部曲”中,我们学习到了 fork 是三部曲的第一部,用于创建一个新进程。但是关于 fork 的更深入的一些的东西我们还没有涉及到,例如,fork 创建的新进程与调用进程之间的关系、父子进程的数据共享问题等。fork 是否可以无限制的调用?如果不行的话,最大限制是多少?另外,我们还...

2017-09-04 16:49:28

阅读数:116

评论数:0

UNIX环境编程学习笔记(18)——进程管理之进程控制三部曲

1 进程控制三部曲概述 UNIX 系统提供了 fork、exec、exit 和 wait 等基本的进程控制原语。通过这些进程控制原语,我们即可完成对进程创建、执行和终止等基本操作。进程的控制可以划分为三部曲, • 第一部:fork 创建新进程。 • 第二部:exec 执行新程序。...

2017-09-04 16:29:49

阅读数:125

评论数:0

UNIX环境编程学习笔记(17)——进程管理之进程的几个基本概念

1 main 函数是如何被调用的? 在编译 C 程序时,C 编译器调用链接器在生成的目标可执行程序文件中,设置一个特殊的启动例程为程序的起始地址。当内核执行 C 程序时,在调用 main 前先调用这个特殊的启动例程,该启动例程从内核取得命令行参数和环境变量值。 2 共享库 共享库...

2017-09-04 15:41:06

阅读数:112

评论数:0

UNIX环境编程学习笔记(16)——进程管理之进程环境变量

1 环境表和环境指针 在每个进程启动时,都会接到一张环境表。环境表是一个字符指针数组,其中每个指针包含一个以 null 结束的 C 字符串的地址。全局变量environ 则包含了该指针数组的地址, extern char **environ; 例如,图 1 显示了包含有 5 个环...

2017-09-04 11:00:35

阅读数:89

评论数:0

UNIX环境编程学习笔记(15)——进程管理之进程终止

1 进程的终止方式 进程的终止方式有 8 种,其中 5 种为正常终止,它们是 1. 从 main 返回。 2. 调用 exit。 3. 调用_exit 或_Exit。 4. 最后一个线程从其启动例程返回。 5. 最后一个线程调用pthread_exit。 ...

2017-09-04 10:03:38

阅读数:100

评论数:0

UNIX环境编程学习笔记(14)——文件I/O之临时文件

ISO C 标准 I/O 库提供了个两个函数 tmpnam 和 tmpfile 以帮助创建临时文件, #include char *tmpnam(char *ptr); 返回值:指向唯一路径名的指针 tmpnam 函数产生一个与现有文件名不同的一个有效路径名字符串。每次调用它...

2017-09-04 09:40:31

阅读数:97

评论数:0

UNIX环境编程学习笔记(13)——文件I/O之标准I/O流

1 标准 I/O 流 之前学习的都是不带缓冲的 I/O 操作函数,直接针对文件描述符的,每调用一次函数可能都会触发一次系统调用,单次调用可能比较快捷。但是,对于需要频繁进行 I/O 操作的程序,频繁触发系统调用产生的消耗太大。 标准 I/O 库提供了带缓冲的 I/O 操作函数,这些函数...

2017-09-03 11:01:15

阅读数:108

评论数:0

UNIX环境编程学习笔记(12)——文件I/O之目录操作

1 引言 在 UNIX 系统中,目录是一种特殊的文件类型。我们可以使用 open 函数来打开目录,获取文件描述符,然后调用 stat 函数来获取目录的属性信息,但是我们却不能够使用 read 函数来读取目录内容。例如,下面例子所示, #include #include #inc...

2017-09-01 13:55:34

阅读数:136

评论数:0

UNIX环境编程学习笔记(11)——文件I/O之文件时间以及 utime 函数

1 文件的时间 每个文件都有三个时间字段,如表 1 所示。 表 1: 文件的三个时间字段 说明 字段 st_atime 文件数据的最后访问时间 st_mtime 文件数据的最后修改时间 st_ctime i...

2017-09-01 10:43:50

阅读数:147

评论数:0

UNIX环境编程学习笔记(10)——文件I/O之硬链接和符号链接

1 文件系统数据结构 UNIX 文件系统通过 i 节点来存储文件的信息。如图 1 所示为一个磁盘柱面上的 i 节点和数据块示意图。其中 i 节点是一个固定长度的记录项,它包含了有关文件的大部分信息。数据块用于存储文件的实际内容。每个文件的 i 节点会记录该文件的内容所占用的数据块信息。 ...

2017-09-01 09:38:03

阅读数:269

评论数:0

UNIX环境编程学习笔记(9)——文件I/O之文件访问权限的屏蔽和更改

1 文件访问权限 在文件访问权限和进程访问控制中,我们已经讲述过文件访问权限位,为了方便,我们重新列在下面,   表 1: 文件的 9 个访问权限位  st_mode 屏蔽  意义  S_IRUSR  用户 -读  S_IWU...

2017-09-01 09:37:23

阅读数:160

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭