详细叙述POSIX标准

上传人:宝路 文档编号:6957378 上传时间:2017-09-15 格式:DOC 页数:25 大小:88.51KB
返回 下载 相关 举报
详细叙述POSIX标准_第1页
第1页 / 共25页
详细叙述POSIX标准_第2页
第2页 / 共25页
详细叙述POSIX标准_第3页
第3页 / 共25页
详细叙述POSIX标准_第4页
第4页 / 共25页
详细叙述POSIX标准_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《详细叙述POSIX标准》由会员分享,可在线阅读,更多相关《详细叙述POSIX标准(25页珍藏版)》请在金锄头文库上搜索。

1、POSIX 标准总体分析POSIX,全称为可移植性操作系统接口,是一种关于信息技术的 IEEE 标准。它包括了系统应用程序接口(简称 API) ,以及实时扩展C 语言 。该标准的目的是定义了标准的基于 UNIX 操作系统的系统接口和环境来支持源代码级的可移植性。现在,标准主要提供了依赖 C 语言的一系列标准服务,再将来的版本中,标准将致力于提供基于不同语言的规范。该标准对核心需求部分定义了一系列任何编程语言都通用的服务,这一部分服务主要从其功能需求方面阐述,而非定义依赖于编程语言的接口。语言规范主要有两部分组成。一部分包括了访问核心服务的编程语言的标准接口,这些核心服务为标准中基于编程语言的核

2、心需求部分所定义;另一部分包含了一个特殊语言服务的标准接口。基于任何语言,与该标准一致的执行都必须遵循语言规范的任何章节。该标准一共被分为四个部分:(1)陈述的范围和一系列标准参考(第一章) ;(2)定义和总概念;(第二章)(3)各种接口设备;(第三章到第九章,第十一章到第十五章)(4)数据交换格式;(第十章)该标准的主要目的有:(1)面向应用(2)定义接口,而不是它的具体实现;(3) 涉及资源和可移植性,而非对象;(4) 基于 c 语言;(5)无超级用户,无系统管理;(6) 最小限度的接口,最小限度的定义;(7)应用领域广泛;(8)对以前的实现进行最小限度改变;(9)对原有程序代码做最小的修

3、改;(10) 实时扩展;以下就对各个章节做简要分析。第一章概述11 范围定义范围的关键要素有:(1)定义足够的一套功能适用于实时应用程序领域的重要部分;(2)定义足够的实现规范和性能相关的函数,以便允许实时应用程序完成系统的确定性的响应;12 一致性系统须支持标准中定义的接口,系统能够提供标准中没有要求到的函数和工具。在遵循于该标准的实现中,一种一致性文档是需要用到的,它必须具有与该标准相同的结构,包含有全名,数字,和标准所指示的日期,以及头文件和中的界限值等等。该一致性文档详细说明了标准中定义的执行行为。该标准要求了应用程序的一致性,所有遵循标准的应用程序都使用基于 c 语言的服务。第二章术

4、语和基本需求21 定义(1)术语该标准中定义了一系列术语,如一致性文档,被定义的实现,可能性,无用的特性等,还定义了一些通用名词,如绝对路径,存取模式,地址空间,适当权限,定时器,异步 I/O操作,后台进程,后台进程组,块文件,阻塞进程,等等。(2)基本概念扩展安全控制;文件存取允许;文件级别;文件名可移植性;路径名的决定;(3)错误号大部分函数都在外部变量 errno 中提供了错误号,定义如下:extern int errno;(4) 简单系统的数据类型这些数据类型在头文件中定义,它包含了至少以下类型:dev_t: 用于设备号;gid_t: 用于进程标志符;ino_t: 用于文件序列号;in

5、ode_t: 用于一些文件参数;nlink_t: 用于连接内容;off_t: 用于文件大小;pid_t: 用于进程或进程组标志符;size_t: 在 c 标准(2)中定义;ssize_t: 用于返回字节数和错误标志的函数;uid_t: 用于用户标志符;(4)环境描述当一个进程开始执行时,将调用一个表示环境的字符串数组,这个数组为外部变量 environ所指向,其定义如下:extern char *environ;(5) 其他在该章中,标准还总体介绍了 c 语言定义的一些标志符,数字方面的限制,以及一些符号常量,这些在以后的章节中都会一一出现。以下是 OSE 服务的简要设计描述的一个清单。这些要

6、求详细叙述在 POSIX 规范书中。l 进程源语进程源语所涉及的函数完成了大多数简单的操作系统服务,如进程处理,进程信号,以及定时器。一般情况下,该标准所确定的进程的所有属性都不能被一个进程源语改变,除非描述符特别指明。l 进程环境l 目录与文件目录与文件所涉及的函数执行了一系列操作系统服务,例如文件的创建和删除,检测,修改特性。它们提供了主要的方法,进程因为一系列 I/O 操作使用他们来存取文件和目录。l 输入输出原语这些子文件和管道函数处理输入和输出。功能被指定为进行文件描述符管理和 I/O 活动之间得平衡调节。l 设备驱动和分类函数该章节描述了一个基本的终端接口和一些基本的终端控制函数,

7、如果执行时被提供,所有的异步通信端口都应该支持它,接口是支持网络连接还是异步端口或者两者都支持由完成者定义,一致性文档应该描述那些设备类型被这些接口所支持。本章的一些函数主要应用与进程的控制终端l 基于 c 语言得服务l 系统数据库l 数据交换格式l 异步l 内存管理l 执行调度l 时钟和定时器l 消息传递第三章进程原语31 进程的创建和执行1进程创建函数原型:pid_t fork (void)函数功能:调用时需要引用的头文件是,fork()创建了一个新的进程。2执行一个文件函数原型:int exec1(const char *path, const char *arg, );int exec

8、v(const char *path, const *char argv );int execle(const char *path, const char *arg, );int execve(const char *path, const *char argv, char *const envp)int execlp(const char *file, const char *arg. );int execvp(const char *file, char *const argv);函数功能:exec 系列的函数用一个新的进程映像替代了当前的进程映像,这个新的进程映像创建于一个规则的,可执

9、行文件,叫做新进程映像文件。执行成功无返回值因为调用进程映像以为新的进程映像所覆盖。3.2 进程的终止进程的终止有两种情况:(1)从 main()函数返回时或者执行 exit()或_exit()函数时正常的终止;(2)被 abort()函数请求或者接受到一些信号时不正常的终止;1等待进程终止函数原型:#include#includepid_t wait(int *stat_loc);pid_t waitpid(pid_t pid,int *stat_loc.int options);函数功能:wait()和 waitpid()允许调用进程获得它的一个子进程的状态信息。Wait()函数将挂起调用

10、进程直到获得了它的子进程的状态信息,或者是直到获得一个终止进程信号;如果 pid1 并且 options=0,waitpid() 函数功能将和 waitpid()相同,否则它的功能将依据 pid 和 options 的值而改变。2. 终止一个进程函数原型:void_exit(int status);函数功能:_exit()函数将终止一个调用进程,该函数不能返回给其调用者3.3 信号在头文件 终声明了 sigset_t 类型和 sigaction 结构。完成所定义的信号分三类:必需的信号;任务控制信号;内存保护信号,分别如下表:必需信号符号常量 描述 SIGABRT 非正常终止信号 SIGALR

11、M 超时信号 SIGFPE 错误运算操作 SIGHUP 为控制中断所检测到的挂断 SIGILL 无效硬件信号的检测 SIGINT 交互式信号 SIGKILL 终止信号 SIGPIPE 写信号 SIGQUIT 交互式终止信号 SIGSEGV 无效内存引用检测信号 SIGTERM 终止信号 SIGUSR1 保留信号 SIGUSR2 保留信号 作业控制信号符号常量 描述 SIGCHLD 子进程终止或停止 SIGCONT 停止后继续 SIGSTOP 停止信号 SIGTSTP 交互式的停止信号 SIGTTIN 从控制终端读 SIGTTOU 写到控制终端 内存保护信号符号常量 描述 SIGBUS 获取内存

12、中不确定的部分 每一个进程有一个进程标记(process mask) ,它定义了一组产生但被阻塞传递的信号集。Sigaction() ,sigpromask () ,sigsuspend()函数控制这个进程标记的行为。1.送一个信号到进程函数原型:#include #includeint kill(pid_t pid, int sig)函数功能:该函数发送一个信号到一个由 pid 指明的进程或者进程组,sig 标志了信号类型,其值是 0 或者上表中的值。如果发送成功,返回0 ,否则返回1 。2. 操纵信号集函数原型:#includeint sigemptyset(sigset_t *set);

13、int sigfillset(sigset_t *set);int sigaddset(sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigisemeber(const sigset_t *set,int signo);函数功能:sigsetops 源语操纵信号集。他们操作以数字为对象,这些数据由应用程序的地址所指向,而不是以系统所知的信号集为对象。3. 检测和更改信号的行为函数原型:#includeint sigaction(int sig,const struct sigaction *act,s

14、truct sigaction *oact);函数功能:该函数允许调用函数检查与确定的信号相联系的行为,参数 sig 确定了信号,sigaction 结构在头文件中被定义,描述了所采取的行为。如果参数 act 不为 null,它指向一个结构,它指定了与信号相联系的行为。如果参数 oact 不为 null,先前与信号相联系的行为将被存储到由 oact 指向的地方。4. 检查和改变阻塞信号函数原型:#includeint sigprocmask(int how,xonst sigset_t *set,sigset_t *oset);函数功能:该函数用来检查和改变调用进程的信号标记(signal m

15、ask) ,如果参数 set 不为null,它指向一个信号集的用于改变当前的阻塞集。参数 how 指明了改变方式,参数 oset不为 null 时,先前的信号标记被存储在它所指向的地方,如果参数 set 为 null,则参数 how就没有意义了,而且进程的信号标记不能随函数调用而改变。5. 检查未定的信号函数原型:#includeint sigpending(sigset_t *set);函数功能:该函数存储一个信号集,这些信号是在被调用进程传输和未定的情况下阻塞的,由参数 set 所指向。6.等待一个信号函数原型:#includeint sigsuspend(const sigset_t *

16、sigmask);函数功能:该函数用参数 sigmask 所指向的信号集取代了进程信号标记(signal mask) ,然后挂起该进程直到接受到一个信号,其行为是执行信号跟踪功能或者是终止该进程。7. 同步接受一个信号函数原型: #includeint sigwaitinfo(const sigset_t *set, siginfo_t *info);int sigtimedwait(const sigset_t *set,siginfo_ *info, const struct timespec *timeout );函数功能:该函数从参数 set 所确定的信号集中选择一个未定的信号出来。如果该函数成功,返回一个信号数;否

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号