欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    posi标准理解.docx

    • 资源ID:26362456       资源大小:34.46KB        全文页数:44页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    posi标准理解.docx

    1、posi标准理解POSIX标准理解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:用于文件序列号;inode_t: 用于一些

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

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

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

    8、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系列的函数用一个新的进程映像替代了当前的进程映像,这个新的进程映像创建于一个规则的,可执行文件,叫做新进程映像文件。执行成功无返回值因为调用进程映像以为新的进程映像所覆盖。3.

    9、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()函数将挂起调用进程直到获得了它的子进程的状态信息,或者是直到获得一个终止进程信号;如果pid1并且option

    10、s=0,waitpid()函数功能将和waitpid()相同,否则它的功能将依据pid和options的值而改变。2.终止一个进程函数原型:void_exit(int status);函数功能:_exit()函数将终止一个调用进程,该函数不能返回给其调用者3.3信号在头文件终声明了sigset_t类型和sigaction结构。完成所定义的信号分三类:必需的信号;任务控制信号;内存保护信号,分别如下表:必需信号符号常量描述SIGABRT非正常终止信号SIGALRM超时信号SIGFPE错误运算操作SIGHUP为控制中断所检测到的挂断SIGILL无效硬件信号的检测SIGINT交互式信号SIGKILL

    11、终止信号SIGPIPE写信号SIGQUIT交互式终止信号SIGSEGV无效内存引用检测信号SIGTERM终止信号SIGUSR1保留信号SIGUSR2保留信号作业控制信号符号常量描述SIGCHLD子进程终止或停止SIGCONT停止后继续SIGSTOP停止信号SIGTSTP交互式的停止信号SIGTTIN从控制终端读SIGTTOU写到控制终端内存保护信号符号常量描述SIGBUS获取内存中不确定的部分每一个进程有一个进程标记(process mask),它定义了一组产生但被阻塞传递的信号集。Sigaction(),sigpromask(),sigsuspend()函数控制这个进程标记的行为。1.送一个

    12、信号到进程函数原型:#include #includeint kill(pid_t pid, int sig)函数功能:该函数发送一个信号到一个由pid指明的进程或者进程组,sig标志了信号类型,其值是0或者上表中的值。如果发送成功,返回0,否则返回1。2.操纵信号集函数原型:#includeint sigemptyset(sigset_t *set);int sigfillset(sigset_t *set);int sigaddset(sigset_t *set, int signo);int sigdelset(sigset_t *set, int signo);int sigiseme

    13、ber(const sigset_t *set,int signo);函数功能:sigsetops源语操纵信号集。他们操作以数字为对象,这些数据由应用程序的地址所指向,而不是以系统所知的信号集为对象。3.检测和更改信号的行为函数原型:#includeint sigaction(int sig,const struct sigaction *act,struct sigaction *oact);函数功能:该函数允许调用函数检查与确定的信号相联系的行为,参数sig确定了信号,sigaction结构在头文件中被定义,描述了所采取的行为。如果参数act不为null,它指向一个结构,它指定了与信号相联

    14、系的行为。如果参数oact不为null,先前与信号相联系的行为将被存储到由oact指向的地方。4.检查和改变阻塞信号函数原型:#includeint sigprocmask(int how,xonst sigset_t *set,sigset_t *oset);函数功能:该函数用来检查和改变调用进程的信号标记(signal mask),如果参数set不为null,它指向一个信号集的用于改变当前的阻塞集。参数how指明了改变方式,参数oset不为null时,先前的信号标记被存储在它所指向的地方,如果参数set为null,则参数how就没有意义了,而且进程的信号标记不能随函数调用而改变。5.检查未

    15、定的信号函数原型:#includeint sigpending(sigset_t *set);函数功能:该函数存储一个信号集,这些信号是在被调用进程传输和未定的情况下阻塞的,由参数set所指向。6.等待一个信号函数原型:#includeint sigsuspend(const sigset_t *sigmask);函数功能:该函数用参数sigmask所指向的信号集取代了进程信号标记(signal mask),然后挂起该进程直到接受到一个信号,其行为是执行信号跟踪功能或者是终止该进程。7.同步接受一个信号函数原型:#include int sigwaitinfo(const sigset_t *

    16、set, siginfo_t *info); int sigtimedwait(const sigset_t *set,siginfo_ *info, const struct timespec *timeout );函数功能:该函数从参数set所确定的信号集中选择一个未定的信号出来。如果该函数成功,返回一个信号数;否则返回1。8.排队一个信号到进程函数原型:#includeint sigqueue(pid_t pid,int signo, const union sigval value);函数功能:该函数功能是使由signo确定的信号将参数value所确定的值发送到由pid指明的进程中去。

    17、3.4定时器操作1调度警报函数原型:unsigned int alarm(unsigned int seconds);函数功能:当参数seconds指定的一段实时时间过去后,该函数将发送一个SIGALRM信号到调用进程。2.挂起进程的执行函数原型:int pause(void);函数功能:该函数挂起一个调用进程直到得到一个信号,这个信号或者执行信号跟踪功能或者是终止该进程。如果是终止进程,该函数不返回;如果是执行信号跟踪功能,则该函数在信号跟踪函数返回后也要返回。3.延迟进程的执行函数原型:unsigned int sleep(unsigned int seconds);函数功能:该函数使当前

    18、进程从执行状态转化为挂起状态,直到参数seconds所指定的一段实时时间过去后,或者是一个唤醒信号跟踪功能或终止进程功能的信号到来。该挂起时间由于系统的其他调度活动可能会比要求的时间长。第四章进程环境4.1进程标志符1.获得进程和父进程的ID函数原型:#includepid_t getpid(void);pid_t getppid(void);函数功能:getpid()返回调用进程的进程ID,getppid()返回调用进程的父进程ID.4.2用户ID1获得真实用户,有效用户,真是组,有效组的ID函数原型:#includeuid_t getuid(void);uid_t geteuid(void

    19、);gid_t getgid(void);gid_t getegid(void);函数功能:getuid()返回调用进程的真实用户ID, geteuid()返回调用进程的有效用户ID,getgid()返回调用进程的真实组ID,getegid()返回调用进程的有效组的ID。2.设置用户和组的ID函数原型:#includeint setuid(uid_t uid);int setgid(gid_t gid);函数功能:这两个函数分别根据进程的权限设置真实用户ID,有效用户ID,真实组ID,有效组ID。3.获得辅助组ID函数原型:# includeint getgroups(int gidsetsi

    20、ze.gid_t grouplist);函数功能:该函数在队列的组列表中填入调用进程的辅助组ID。参数grouplist确定了组列表中的元素个数。4.获得用户名函数原型:char *getlogin(void)函数功能:该函数返回一个指针,指向与调用进程相关的用户名。4.3进程组1.获得进程组ID函数原型:#includepid_t getpgrp(void);函数功能:该函数返回调用进程的进程组ID。2.创建会议并且设置进程组ID函数原型:#includepid_t setsid(void)函数功能:如果调用进程不是进程组的引导者,则该函数将创建一个新的会议。该调用进程应该为新会议的会议引导

    21、者,应该为新进程组的引导,应该没有控制终端。进程组的ID应该等于该调用进程的ID。3.为作业控制设置进程组ID函数原型:#includeint setpgid(pid_t pid,pid_t pgid);函数功能:如_POSIX_JOB_CONTROL被定义,则该函数用来加入已经存在的进程组或者创建一个新的进程组。4.4系统标志1.获得系统名函数原型:#includeint uname(struct utsname *name);函数功能:该函数存储了鉴别当前操作系统的信息。4.5时间1得到系统时间函数原型:#includetime_t time(time_t *tloc);函数功能:该函数返

    22、回自从一时间点以来的某个时间值,以秒为单位。参数tloc指向一个时间值所存储的地方。2.获得进程时间函数原型:#includeclock_t times(struct time *buffer);函数功能:参数buffer指向一个结构,该函数向该结构填写有关时间的信息。Clock_t和tms结构在中定义。46环境变量1.获取环境函数原型:#includechar *getenv(const char *name);函数功能:该函数在环境列表查找字符串name=value,返回指向value的指针。如果没有找到,则返回null。4.7终端标志1产生终端路径函数原型:#includechar Ic

    23、termid(char *s);函数功能:该函数产生一个字符串,作为路径名,提交到当前进程的当前控制终端。2确定终端设备名函数原型:char *ttyname(int fildes);int isatty(int fildes);函数功能:ttyname()返回一个指针指向一个字符串,它包含了与文件描述符fildes相关的终端名;如果fildes是一个有效的与终端联系的文件描述符,isatty()返回“1”,否则返回“0”。48可配置的系统变量1获得可配置的系统变量函数原型:#includelong sysconf(int name);函数功能:该函数提供了一个应用方法来决定可配置系统变量的当

    24、前值。参数name代表了所查询的系统变量。第五章文件和目录51目录1目录的入口形式头文件定义了一个结构和目录程序用到的类型,没有确定的文件内部格式。Readdir()返回了一个指针指向一个类型对象struct dirent。2目录操作函数原型:#include#includedir *opendir(const char *dirname);struct dirent *readdir(dir *dirp);void rewinddir(dir *dirp);int closedir(dir *dirp);函数功能:opendir()根据参数dirname打开一个目录流;readdir()返回

    25、一个指针,它指向一个目录流中当前位置的目录入口,目录流由参数dirp指向;rewinddir()重置目录流的位置到目录的起点;closedir()关闭目录流,如成功,则返回“0”值。52工作目录1改变当前的工作目录函数原型:int chdir(const char *path);函数功能:path指向目录的路径名。该函数使命名的目录成为当前的工作目录。2获得工作目录路径名函数原型:char *getcwd(char *buf,size_t size);函数功能:该函数复制当前工作目录的绝对路径名到buf所指向的队列中。53基本文件的创建1打开一个文件函数原型:#include#include#

    26、includeint open(const char *path, int oflag,);函数功能:open()在文件和文件描述符之间建立了一个连接,它创建了一个指向一个文件的打开文件描述,参数path指向文件的路径名。2创建一个新文件或者重写一个已经存在的文件函数原型:#include#include#includeint creat(const char *path, mode_t mode);函数功能:该函数调用creat(path,mode)相当于open(path,o_wronly/o_creat/o_trunc,mode);3设置文件的创建标记函数原型:#include#incl

    27、udemode_t umask(mode_t cmask);函数原型:umask()设置进程的文件模式创建标记到cmask,并且返回原来的标记值。4连接到一个文件函数原型:int link(const char *existing,const char *new);函数功能:参数existing指向路径名来命名存在文件,参数new指向一个路径名,它命名了一个创建的新的目录入口。该函数为已存在的文件自动的创建一个新的连接,并且将文件连接数加1。54特殊文件创建1生成一个目录函数原型:#include#includeint mkdir(const char *path,mode_t mode);函数功能:该函数依据参数path创建一个新的目录。新目录的允许位根据mode初始化。2创建一个FIFO类型的文件函数原型:#include#includesys/stat.hint mkfifo(const char *path,mode_t mode);函数功能:mkfifo()创建一个新的fifo类型文件,它由path指向的路径名命名。


    注意事项

    本文(posi标准理解.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开