Unix 高级环境编程
文章平均质量分 84
逆风微积分
目前从事Android系统框架层开发工作
展开
-
《unix高级环境编程》进程间通信——管道和FIFO
管道是早期 UNIX 系统的 IPC 机制,并且所有的 UNIX 系统原创 2014-11-16 20:12:09 · 1719 阅读 · 0 评论 -
《unix高级环境编程》关于apue.h和源码编译问题
《unix高级环境编程》这本书的源码下载连接,这里原创 2014-10-22 14:19:22 · 1851 阅读 · 0 评论 -
《unix高级环境编程》文件和目录——文件权限
umask函数/************************** * 函数功能:为进程设置文件模式创建屏蔽字,并返回以前的值; * 函数原型: * * mode_t umask (mode_t cmask); * 参数说明 * cmask是前面介绍的文件权限的9个值的若干个按位“或”构成,9个权限如下所示: **//*****************************原创 2014-11-03 09:43:37 · 862 阅读 · 0 评论 -
《unix高级环境编程》终端 I/O——终端 IO 基本概述
本文是对终端IO的基本描述,终端主要是标识符的使用,只有在实践中才能够进一步理解。原创 2014-11-22 16:08:46 · 2864 阅读 · 2 评论 -
《unix高级环境编程》套接字——基于 socket 的编程
客户端:/* 基于TCP协议面向连接的客户端进程 */#include "apue.h"#include #include #include #include "connectre.h"/* 地址的最长大小 */#define MAXADDRLEN 256/* 缓冲区大小 */#define BUFLEN 128/* 外部函数定义,该函数功能是实现套接字连接 *//原创 2014-11-20 20:10:37 · 2256 阅读 · 2 评论 -
《unix高级环境编程》进程控制——进程ID
进程ID在unix系统中,每个进程都有一个非负整型原创 2014-11-05 19:28:50 · 1178 阅读 · 0 评论 -
《unix高级环境编程》进程环境——进程资源限制
每个进程都有一组资源限制,其中一些可以使用getrlimit和setrlimit函数进行查询和修改。原创 2014-11-05 17:10:01 · 1036 阅读 · 0 评论 -
《unix高级环境编程》进程间通信—— UNIX 域套接字
UNIX 套接字可在用一台机器上实现进程间通信,比因特网域套接字的效率更高。UNIX与套接字提供和数据报两种接口,UNIX域数据报服务是可靠的,就不会丢失消息也不会传递出错。UNIX域套接字是套接字和管道之间的混合物。为了创建一对非命名的,相互连接的UNXI域套接字,用户可以使用socketopair函数。原创 2014-11-21 21:22:35 · 1781 阅读 · 0 评论 -
《unix高级环境编程》进程环境——进程终止
当内核执行C程序时(),原创 2014-11-04 21:36:39 · 1035 阅读 · 0 评论 -
《unix高级环境编程》进程环境——环境变量
环境表每个程序都会对应一张环境表,环境表是一个字符指针数组,其中每个指针包含一个以null结束的C字符串地址。全局变量environ包含了 该指针数组的地址: extern char **environ;* 下图是环境表,包含3个C字符串,每个字符串结尾都显式的有一个null字符。原创 2014-11-05 10:37:14 · 1148 阅读 · 0 评论 -
《unix高级环境编程》标准I/O——流操作
标准I/O的文件操作是与流相关联的,所以我们要了解原创 2014-11-04 09:58:57 · 1017 阅读 · 0 评论 -
《unix高级环境编程》系统数据文件和信息——时间和日期
unix内核的基本服务时间是计算自国际标准时间公元1970年原创 2014-11-04 19:50:43 · 1096 阅读 · 0 评论 -
《unix高级环境编程》系统数据文件和信息——口令文件
口令文件的结构/* The passwd structure. */struct passwd{ char *pw_name; /* Username. */ char *pw_passwd; /* Password. */ uid_t pw_uid; /* User ID. */ gid_t pw_gid; /* Group ID.原创 2014-11-04 16:40:44 · 931 阅读 · 0 评论 -
《unix高级环境编程》进程间通信——基于 STREAMS 的管道
前面介绍的《管道进程间通信》是半双工管道,本届原创 2014-11-21 20:39:44 · 2004 阅读 · 0 评论 -
《unix高级环境编程》进程控制——创建进程
unix中进程创建有两个函数分别是fork和vfork函数原创 2014-11-05 22:22:27 · 1160 阅读 · 2 评论 -
《unix高级环境编程》进程控制——进程等待
当一个进程正常或异常终止时,内核会向其父进程发送原创 2014-11-06 20:48:41 · 1258 阅读 · 0 评论 -
《unix高级环境编程》进程关系——会话
会话会话是一个或多个进程组的集合原创 2014-11-08 11:37:07 · 1198 阅读 · 0 评论 -
《unix高级环境编程》套接字——套接字基本描述
在前面部分介绍的:管道、FIFO、消息队列、信号量和共享内存都是同一台计算机上的进程间通信,本节介绍的套接字是可以实现不同计算机之间的远程进程间通信。套接口是网络进程的 ID,在网络中每一个节点都有一个网络地址,也就是 IP 地址,两个进程间通信时,首先要确定各自所在网络节点的网络地址。但是,网络地址只要确定进程所在的计算机,由于一台计算机上同时可能有多个网络进程,所以仅凭网络地址还不能确定是网络中的哪一个进程,因此套接口中还需要其他信息,也就是端口。在一台计算机中,一个端口号只能分配给一个进程,所以,进程原创 2014-11-19 10:52:37 · 1522 阅读 · 0 评论 -
《unix高级环境编程》套接字——数据传输
前一章节记录的套接字的连接《套接字基本操作》,建立连接原创 2014-11-20 10:34:10 · 1467 阅读 · 0 评论 -
《unix高级环境编程》线程——线程同步
这篇文章介绍了线程同步的知识,包括互斥锁、读写锁和条件变量,并给出了相关的代码实现。原创 2014-11-12 21:05:40 · 1359 阅读 · 2 评论 -
epoll 解析
epoll 实际上是 poll 的一种改进,它可以处理大批量的句柄。而 poll 又是 select 的一种改进。在 select 中对所打开的文件描述符个数有一定的限制,该限制由 FD_SETSIZE 设置(一般为 1024 或 2048), 而且内核中的 select 的实现是采用轮询来处理描文件描述符集,因此效率低。当文件描述符集中的某个描述符处于可读、可写或异常状态时,select 采用内存拷贝方法通知用户空间。因此, 在 select 模型中文件描述符个数受限且效率低的问题就很明显。为了解决 se原创 2015-01-15 21:51:23 · 3043 阅读 · 0 评论 -
《unix高级环境编程》高级 I/O—— I/O 多路复用
当我们想要多次对描述符进行 read原创 2014-11-15 20:00:20 · 1144 阅读 · 0 评论 -
《unix高级环境编程》线程——线程基本概述
线程的基本概念原创 2014-11-10 10:27:22 · 1049 阅读 · 0 评论 -
《unix高级环境编程》线程控制——线程私有数据
进程中的所有线程都可以访问进程的整个地址空间,一个线程真正拥有的唯一私有存储是处理器寄存器,甚至栈地址也能被共享,底层实现也没有阻止这种访问。但处理线程私有数据的函数可以提高线程间数据的独立性,维护基于每个线程的数据。在什么时候需要使用这种机制呢?在需要一个变量时,如果所有线程共享相同的值,则可以使用静态或外部数据,就像在单线程程序中那样,但通常需要互斥量来同步跨越多个线程对共享数据的存取原创 2014-11-13 21:40:02 · 887 阅读 · 0 评论 -
《unix高级环境编程》线程——线程终止
在进程中,若调用了函数 exit,原创 2014-11-10 18:32:38 · 1222 阅读 · 0 评论 -
《unix高级环境编程》进程间通信——信号量
这里所介绍的信号量是一种原创 2014-11-17 20:13:09 · 1820 阅读 · 1 评论 -
《unix高级环境编程》进程间通信——消息队列
消息队列是消息的链接表,保存在内核,通过消息队列的引用标识符来访问消息,消息队列对每个消息指定了特定的消息类型,接收消息的进程可以请求接收下一条消息,也可以请求接收下一条特定类型的消息。原创 2014-11-17 16:12:52 · 1608 阅读 · 0 评论 -
《unix高级环境编程》套接字——套接字选项
套接字机制有两种套接字选项接口来原创 2014-11-21 17:36:28 · 1221 阅读 · 0 评论 -
《unix高级环境编程》高级 I/O——非阻塞 I/O
非阻塞I/O使我们可以调用 open、write和read 这样的I/O操作,并使这些操作不会永远阻塞。如果这种操作不能完成,则立即出错返回,表示该操作若继续执行将阻塞。对于一个给定的文件描述符由以下两种方法可以对其指定非阻塞I/O:若调用open 获得描述符,则可指定O_NONBLOCK标志;对已打开的描述符,可以使用fcntl,由该函数打开O_NONBLOCK文件状态标志;测试原创 2014-11-15 08:56:37 · 1250 阅读 · 0 评论 -
《unix高级环境编程》进程控制——exec序列函数
exec替换进程映像在进程的创建上Unix采用了一个独特的方法,它将进程创建与加载一个新进程映象分离。这样的好处是有更多的余地对两种操作进行管理。当我们创建了一个进程之后,通常将子进程替换成新的进程映象,这可以用exec系列的函数来进行。当然,exec系列的函数也可以将当前进程替换掉。例如:在shell命令行执行ps命令,实际上是shell进程调用fork复制一个新的子进程,在原创 2014-11-07 11:07:26 · 1127 阅读 · 0 评论 -
《unix高级环境编程》标准I/O——FILE对象
前面介绍的《文件I/O》都是针对文件描述符原创 2014-11-03 22:41:10 · 1037 阅读 · 0 评论 -
《unix高级环境编程》系统数据文件和信息——组文件
在系统文件中,跟口令文件原创 2014-11-04 17:02:38 · 873 阅读 · 0 评论 -
《unix高级环境编程》套接字——套接字基本操作
将套接字与地址绑定原创 2014-11-19 19:56:05 · 1322 阅读 · 0 评论 -
《unix高级环境编程》线程控制——线程与信号
当线程被创建时,它会继承进程的掩码原创 2014-11-14 11:01:40 · 978 阅读 · 0 评论 -
《unix高级环境编程》线程控制——线程取消选项
线程的取消选项有两种:可取消状态、可取消类型原创 2014-11-13 22:44:41 · 882 阅读 · 0 评论 -
《unix高级环境编程》线程控制——同步属性
在前面章节介绍的《线程同步》都是默认属性,原创 2014-11-13 19:51:37 · 1036 阅读 · 0 评论 -
《unix高级环境编程》线程控制——线程属性
在创建新的线程时,我们可以使用系统默认的属性,也可以自己原创 2014-11-13 16:58:28 · 986 阅读 · 0 评论 -
《unix高级环境编程》信号——abort、system和sleep函数
abort函数 abort函数的功能是使异常终止,此函数将SIGABRT信号发送给调用进程,让进程捕捉SIGABRT信号目的是在进程终止之前由其执行所需的清理操作。默认情况是终止调用进程。可以采用sigaction和kill函数来实现abort,程序如下:system函数 POSIX.1要求system函数忽略SIGINT和SITQUIT信号,阻塞SIGCHLD。采原创 2014-11-09 21:51:32 · 1439 阅读 · 0 评论 -
《unix高级环境编程》进程环境——异常处理
在C语言中,当嵌套函数调用出错时,可以原创 2014-11-05 15:56:44 · 1103 阅读 · 0 评论 -
《unix高级环境编程》信号——信号基本概述
信号基本概念信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递原创 2014-11-08 20:52:18 · 1263 阅读 · 0 评论