




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、P OSIX标准理解POSIX标准总体分析POSIX,全称为可移植性操作系统接口,是一种关于信息技术的IEEE标准。它包括了系统应用程序接口(简称 API),以及实时扩展C语言。该标准的目的是定义了标准的基于 UNIX操作系统的系统接口和环境来支持源代码级的可移植性。现在,标准主要提供了依赖C语言的一系列标准服务,再将来的版本中,标准将致力于提供基于不同语言的规范。该标准对核心需求部分定义了一系列任何编程语言都通用的服务,这一部分服务主要从其功能需求方面阐述, 而非定义依赖于编程语言的接口。两部分组成。 一部分包括了访问核心服务的编程语言的标准接口,语言规范主要有这些核心服务为标准中基于编程语
2、言的核心需求部分所定义; 另一部分包含了一个特殊语言服 务的标准接口。 基于任何语言, 与该标准一致的执行都必须遵循语言规范的任何章节。该标准一共被分为四个部分:1)陈述的范围和一系列标准参考(第一章);2)3)定义和总概念;各种接口设备;第二章)第三章到第九章,第十一章到第十五章)( 4)数据交换格式;该标准的主要目的有:第十章)面向应用定义接口,而不是它的具体实现;3)涉及资源和可移植性,而非对象;4)5)基于 c 语言;无超级用户,无系统管理;6)最小限度的接口,最小限度的定义;应用领域广泛;对以前的实现进行最小限度改变;对原有程序代码做最小的修改;10)实时扩展;以下就对各个章节做简要
3、分析。第一章概述11 范围 定义范围的关键要素有:1)定义足够的一套功能适用于实时应用程序领域的重要部分;2)定义足够的实现规范和性能相关的函数,以便允许实时应用程序完成系统的确定性的响应;12 一致性 系统须支持标准中定义的接口,系统能够提供标准中没有要求到的函数和工具。在遵循于该标准的实现中, 一种一致性文档是需要用到的, 它必须具有与该标准 相同的结构,包含有全名,数字,和标准所指示的日期,以及头文件 <limits.h>和 <unistd.h> 中的界限值等等。该一致性文档详细说明了标准中定义的执行行 为。该标准要求了应用程序的一致性,所有遵循标准的应用程序都使
4、用基于 c语言的服务。第二章术语和基本需求21 定义1)术语该标准中定义了一系列术语,如一致性文档,被定义的实现,可能性,无用的特 性等,还定义了一些通用名词,如绝对路径,存取模式,地址空间,适当权限, 定时器,异步 I/O 操作,后台进程,后台进程组,块文件,阻塞进程,等等。基本概念扩展安全控制;文件存取允许;文件级别;文件名可移植性;路径名的决定;3)错误号大部分函数都在外部变量 errno 中提供了错误号,定义如下:extern int errno;4)简单系统的数据类型这些数据类型在头文件 <sys/types.h> 中定义,它包含了至少以下类型:dev_t:用于设备号;g
5、id_t:用于进程标志符;ino_t:用于文件序列号;inode_t:用于一些文件参数;nlink_t:用于连接内容;off_t:用于文件大小;pid_t:用于进程或进程组标志符;size_t:在 c 标准( 2)中定义;ssize_t:用于返回字节数和错误标志的函数;uid_t:用于用户标志符;5)环境描述当一个进程开始执行时, 将调用一个表示环境的字符串数组, 这个数组为外部变 量 environ 所指向,其定义如下:extern char *environ;6)其他在该章中, 标准还总体介绍了 c 语言定义的一些标志符, 数字方面的限制, 以及 一些符号常量,这些在以后的章节中都会一一出
6、现。以下是osEK务的简要设计描述的一个清单。这些要求详细叙述在POSIX规范书中。进程源语 进程源语所涉及的函数完成了大多数简单的操作系统服务, 如进程处理, 进程信 号,以及定时器。一般情况下, 该标准所确定的进程的所有属性都不能被一个进 程源语改变,除非描述符特别指明。进程环境目录与文件 目录与文件所涉及的函数执行了一系列操作系统服务,例如文件的创建和删除, 检测,修改特性。它们提供了主要的方法,进程因为一系列 I/O 操作使用他们 来存取文件和目录。输入输出原语这些子文件和管道函数处理输入和输出。功能被指定为进行文件描述符管理 和 I/O 活动之间得平衡调节。设备驱动和分类函数该章节描
7、述了一个基本的终端接口和一些基本的终端控制函数,如果执行时 被提供,所有的异步通信端口都应该支持它, 接口是支持网络连接还是异步端口 或者两者都支持由完成者定义, 一致性文档应该描述那些设备类型被这些接口所 支持。本章的一些函数主要应用与进程的控制终端基于 c 语言得服务系统数据库数据交换格式异步内存管理执行调度时钟和定时器消息传递第三章进程原语31 进程的创建和执行1进程创建 程映像,这个新的进程映像创建于一个规则的, 可执行文件,叫做新进程映像文 件。执行成功无返回值因为调用进程映像以为新的进程映像所覆盖。函数原型: pid_tfork (void)函数功能:调用时需要引用的头文件是 &l
8、t;sys/types.h>,fork()创建了一个新的进程。2执行一个文件函数原型: int exec1(const char *path, const char *arg,);int execv(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. );i
9、nt execvp(const char *file, char *const argv);函数功能: exec 系列的函数用一个新的进程映像替代了当前的进3.2 进程的终止 进程的终止有两种情况:(1)从main()函数返回时或者执行exit()或_exit()函数时正常的终止;(2)被abort()函数请求或者接受到一些信号时不正常的终止;1. 等待进程终止函数原型:#in cludevsys/t yp es.h>#in cludevsys/wait.hpid_t wait(i nt *stat_loc);p id_t wait pid( pid_t pi d,i nt *stat_
10、loc.i nt op ti on s);函数功能:wait ()和waitpid ()允许调用进程获得它的一个子进程的状态信息。Wait()函数将挂起调用进程直到获得了它的子进程的状态信息,或者是直到获得一个终止进程信号;如果 pid = 1并且options=0 , waitpid()函数功能将和wait pi d()相同,否则它的功能将依据 pid和op tio ns的值而改变。 终止一个进程2.函数原型:void_exit( int status);函数功能:_exit()函数将终止一个调用进程,该函数不能返回给其调用3.3信号在头文件vsignal.h终声明了 sigset_t类型和
11、sigaction 结构。完成所定义的信号分三类:必需的信号;任务控制信号;内存保护信号,分别如下表:必需信号符号常量描述1pIGABRT非正常终止信号SiGALRM超时信号SIGF PE错误运算操作Sighu P为控制中断所检测到的挂断Sigill无效硬件信号的检测SiGINT交互式信号Sigkill终止信号Sig pipe写信号SIGQUIT交互式终止信号SIGSEGV无效内存引用检测信号SIGTERM终止信号S1GUSRI保留信号S1GUSR2保留信号作业控制信号符号常量描述SIGCHLD子进程终止或停止SIGCONT停止后继续SIGST 0P停止信号SIGTST P交互式的停止信号SI
12、GTTIN从控制终端读pIGTTOU写到控制终端内存保护信号符号常量描述SIGBUS获取内存中不确定的部分每一个进程有一个进程标记(P rocess mask),它定义了一组产生但被阻塞传递的信号集。Sigacti on (), sig pro mask (), sigsus pend () 函数控制这个进程标记的行为。1. 送一个信号到进程函数原型:#in elude <sys/t yp es.h>#in cludevsig nal.h> int kill( pid_t pid, int sig)函数功能:该函数发送一个信号到一个由 pid 指明的进程或者进程组, sig
13、标志 了信号类型,其值是 0 或者上表中的值。如果发送成功,返回 0',否则返回1'。2. 操纵信号集函数原型: #include<signal.h>int sigemptyset(sigset_t *set);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 源语操纵信号集
14、。他们操作以数字为对象,这些数据由应用程序的地址所指向,而不是以系统所知的信号集为对象。3. 检测和更改信号的行为函数原型: #include<signal.h>int sigaction(int sig,const struct sigaction *act,structsigaction *oact);函数功能:该函数允许调用函数检查与确定的信号相联系的行为,参数 sig 确定了信号, sigaction 结构在头文件 <signal.h> 中被定义,描述了所采取的行为。如果参数 act 不为 null, 它指向一个结构,它指定了与信号相联系的行为。如果参数 oac
15、t 不为 null ,先前与信号相联系的行为将被存储到由oact指向的地方。4. 检查和改变阻塞信号函数原型: #include<signal.h>int sigprocmask(int how,xonst sigset_t *set,sigset_t *oset);函数功能:该函数用来检查和改变调用进程的信号标记( signal mask ),如果参数 set 不为 null ,它指向一个信号集的用于改变当前的阻塞集。参数how指明了改变方式, 参数 oset 不为 null 时,先前的信号标记被存储在它所指向的不能随函数调用而改变。地方,如果参数set为null,则参数how就
16、没有意义了,而且进程的信号标记5. 检查未定的信号函数原型: #include<signal.h>int sigpending(sigset_t *set);函数功能: 该函数存储一个信号集, 这些信号是在被调用进程传输和未定的情 况下阻塞的,由参数 set 所指向。6. 等待一个信号函数原型: #include<signal.h>int sigsuspend(const sigset_t *sigmask);函数功能:该函数用参数 sigmask 所指向的信号集取代了进程信号标记signal mask ),然后挂起该进程直到接受到一个信号,其行为是执行信号跟 踪功能或
17、者是终止该进程。7. 同步接受一个信号函数原型: #include<signal.h>int sigwaitinfo(const sigset_t *set, siginfo_t *info);int sigtimedwait(const sigset_t *set,siginfo_ *info, conststruct timespec *timeout );函数功能: 该函数从参数 set 所确定的信号集中选择一个未定的信号出来。 如果该函数成功,返回一个信号数;否则返回1。8. 排队一个信号到进程函数原型: #include<signal.h>int sigque
18、ue(pid_t pid,int signo, const union sigval value);函数功能:该函数功能是使由 signo 确定的信号将参数 value 所确定的值发送 到由 pid 指明的进程中去。3.4 定时器操作1调度警报函数原型: unsigned int alarm(unsigned int seconds);函数功能:当参数 seconds 指定的一段实时时间过去后, 该函数将发送个SIGALRM信号到调用进程。2. 挂起进程的执行函数原型: int pause(void);函数功能: 该函数挂起一个调用进程直到得到一个信号, 这个信号或者执行信号跟踪功能或者是终止
19、该进程。 如果是终止进程, 该函数不返回; 如果是执 行信号跟踪功能,则该函数在信号跟踪函数返回后也要返回。3. 延迟进程的执行函数原型: unsigned int sleep(unsigned int seconds); 函数功能:该函数使当前进程从执行状态转化为挂起状态,直到参数 seconds所指定的一段实时时间过去后, 或者是一个唤醒信号跟踪功能或终止进程功能的 信号到来。该挂起时间由于系统的其他调度活动可能会比要求的时间长。第四章进程环境4.1 进程标志符1. 获得进程和父进程的 ID函数原型: #include<sys/types.h>pid_t getpid(void
20、);pid_t getppid(void);函数功能: getpid ()返回调用进程的进程 ID, getppid ()返回调用进程的父进程 ID.4.2 用户 ID 1获得真实用户,有效用户,真是组,有效组的 ID函数原型: #include<sys/types.h>uid_t getuid(void);uid_t geteuid(void);gid_t getgid(void);gid_t getegid(void);函数功能: getuid ()返回调用进程的真实用户 ID, geteuid() 返回调用进程的有效用户 ID,getgid ()返回调用进程的真实组 ID,g
21、etegid ()返回调 用进程的有效组的 ID。2. 设置用户和组的 ID函数原型: #include<sys/types.h>int setuid(uid_t uid);int setgid(gid_t gid);函数功能:这两个函数分别根据进程的权限设置真实用户ID,有效用户id,真实组 ID ,有效组 ID。3. 获得辅助组 ID函数原型: # include<sys/types.h>int getgroups(int gidsetsize.gid_t grouplist);函数功能:该函数在队列的组列表中填入调用进程的辅助组id。参数grouplist 确定了
22、组列表中的元素个数。4. 获得用户名函数原型: char *getlogin(void)函数功能:该函数返回一个指针,指向与调用进程相关的用户名。4.3 进程组1. 获得进程组 ID函数原型: #include<sys/types.h>pid_t getpgrp(void);函数功能:该函数返回调用进程的进程组 ID。2. 创建会议并且设置进程组 ID函数原型: #include<sys/types.h>pid_t setsid(void)函数功能:如果调用进程不是进程组的引导者, 则该函数将创建一个新的会议。该调用进程应该为新会议的会议引导者, 应该为新进程组的引导,
23、 应该没有控制 终端。进程组的 ID 应该等于该调用进程的 ID。3. 为作业控制设置进程组 ID函数原型: #include<sys/types.h>int setpgid(pid_t pid,pid_t pgid);函数功能:如匕POSIX_JOB_CONTROL定义,则该函数用来加入已经存在的进 程组或者创建一个新的进程组。4.4 系统标志1. 获得系统名函数原型:#include<sys/utaname.h>int uname(struct utsname *name);函数功能:该函数存储了鉴别当前操作系统的信息。4.5 时间1 得到系统时间 函数原型: #i
24、nclude<time.h>time_t time(time_t *tloc);函数功能: 该函数返回自从一时间点以来的某个时间值, 以秒为单位。 参数 tloc指向一个时间值所存储的地方。2. 获得进程时间函数原型: #include<sys/times.h>clock_t times(struct time *buffer);函数功能: 参数 buffer 指向一个结构, 该函数向该结构填写有关时间的信息。Clock_t 和 tms 结构在 <sys/times.h> 中定义。46 环境变量1. 获取环境函数原型: #include<stdlib.
25、h>char *getenv(const char *name);函数功能:该函数在环境列表查找字符串 name=value, 返回指向 value 的指针。如果没有找到,则返回 null 。4.7 终端标志1产生终端路径函数原型: #include<stdio.h>char Ictermid(char *s);函数功能:该函数产生一个字符串, 作为路径名, 提交到当前进程的当前控制 终端。2确定终端设备名函数原型: char *ttyname(int fildes);参数没有确函数原型:#include<sys/types.h>int isatty(int fi
26、ldes);函数功能: ttyname ()返回一个指针指向一个字符串,它包含了与文件描述符 fildes 相关的终端名;如果 fildes 是一个有效的与终端联系的文件描述符,isatty ()返回“ 1”,否则返回“ 0” 48 可配置的系统变量1获得可配置的系统变量函数原型: #include<unistd.h>long sysconf(int name);函数功能:该函数提供了一个应用方法来决定可配置系统变量的当前值。name代表了所查询的系统变量。第五章文件和目录51 目录1目录的入口形式头文件 <dirent.h> 定义了一个结构和目录程序用到的类型,定的文
27、件内部格式。 Readdir() 返回了一个指针指向一个类型对象 struct dirent 。2目录操作#include<dirent.h> dir *opendir(const char *dirname);struct dirent *readdir(dir *dirp);void rewinddir(dir *dirp);int closedir(dir *dirp);函数功能:opendir() 根据参数 dirname 打开一个目录流; readdir ()返回一指向;个指针,它指向一个目录流中当前位置的目录入口,目录流由参数 dirp rewinddir ()重置目录
28、流的位置到目录的起点; closedir ()关闭目录流,如 成功,则返回“ 0”值。52 工作目录1 改变当前的工作目录函数原型: int chdir(const char *path);函数功能: path 指向目录的路径名。该函数使命名的目录成为当前的工作目录。获得工作目录路径名函数原型: char *getcwd(char *buf,size_t size);函数功能:该函数复制当前工作目录的绝对路径名到 buf 所指向的队列中。53基本文件的创建打开一个文件函数原型:#include<sys/types.h>#include<sys/stat.h> #incl
29、ude<fcnt1.h> int open(const char *pa th, int oflag, );函数功能:open ()在文件和文件描述符之间建立了一个连接,它创建 了一个指向一个文件的打开文件描述,参数 path 指向文件的路径名。2 创建一个新文件或者重写一个已经存在的文件函数原型: #include<sys/types.h>#include<sys/stat.h> #include<fcnt1.h> int creat(const char *path, mode_t mode);函数功能:该函数调用 creat (path,m
30、ode 相当于 open (path,o_wronly/o_creat/o_trunc,mode);3 设置文件的创建标记函数原型: #include<sys/types.h>#include<sys/stat.h> mode_t umask(mode_t cmask);函数原型:umaskO设置进程的文件模式创建标记到 cmask,并且返回原来的标记值。4 连接到一个文件函数原型: int link(const char *existing,const char *new);函数功能:参数existing 指向路径名来命名存在文件,参数new指向一个路径名, 它命名了
31、一个创建的新的目录入口。 该函数为已存在的文件自动的 创建一个新的连接,并且将文件连接数加 1。54 特殊文件创建1 生成一个目录函数原型:#include<sys/types.h>#include<sys/stat.h>int mkdir(const char *path,mode_t mode);函数功能:该函数依据参数 path 创建一个新的目录。新目录的允许位根据mode初始化。2 创建一个 FIFO 类型的文件函数原型:#include<sys/types.h>#includesys/stat.h>int mkfifo(const char
32、*path,mode_t mode);函数功能:mkfifo ()创建一个新的 fifo 类型文件,它由 path 指向的路径名命名。55 文件的移动1 移动目录入口函数原型:int unlink(const char *path);函数功能:该函数移去由参数 path 指向得路径名所命名得连接并将连接数减去 1。2 移去一个目录函数原型:int rmdir(const char *path)函数功能:3 重命名一个文件函数原型: int rename(const char *old,const char *new);路径名,参数new指向文件的新路径名。5文件特征5可配置路径名变量第六章输入
33、与输出源语6管道创建内进程通道函数原型: int pipe(int filedw2);函数功能:该函数创建一个管道并且创建两个文件描述符,一个是fiides0, 一个是 fiides1, 它们分别指的是读'与写'的管道端。62 文件描述符控制1 复制一个打开文件描述符函数原型: int dup(int fildes);int dup2(int fileds,int fileds2);函数功能:这两个函数为 fcntl ()服务提供了两个选择的接口,用至U了 F_DUPF命令。63撤除文件描述符关闭一个文件函数原型: int close (int fildes);函数功能64输入
34、和输出文件读函数原型: ssize_t read(int fildes,void *buf,size_t nbyte);函数功能:文件写 函数原型: ssize_t write(int fildes,const void *buf,size_t nbyte);函数功能:65 一个文件的控制操作1 文件控制操作的数据定义头文件vfcnt1.h为fcnti ()和open ()定义了一下的要求和参数:fcnti ()的 _cmd 值常量描述F_DUPFDF getfdF_getlkF setfdF gettflF setflF_SETLKF_SETLKW2文件控制函数原型:#clude vsys/
35、t yp es.h>#cluedv uni std.h>#in cludevfc ntl.h>int fen tl(i nt fildes,i nt end.);函数功能:fentl()为打开的文件提供了一系列控制,参数fildes是个文件描述符。Cmc决定了控制的内容。读/写文件偏移量的重新定位函数原型:#include<sys/types.h>#in clude< uni std.h>off_t lseek(i nt fildes,off_t offset,i nt whe nee);函数功能:lseek ()为fildes 所指定的文件重新设置偏
36、移量。6. 6文件同步文件的状态同步函数原型:#includevunistd.h>int fsyn c(i nt fildes);上。文件数据的同步 函数原型:#i ncludevu nistd.h>函数功能:该函数用来暗示所有的文件描述数据被传输到了存储设备int fdatasync(int fildes);函数功能:该函数迫使当前所有排队的 I/O 操作进入同步 I/O 状态。6 7 异步 输入与输出1 异步输入与输出的数据定义头文件 <aio.h> 能使vsys/types.h> , <signal.h> , <time.h> 和 v
37、fcntl.h>中的符号可见。 异步 I/O 控制块 异步 I/O 控制块结构 aiocb 在许多异步 I/O 接口中使用,它在 <aio.h> 中定义。主要常量2 异步读函数原型: #include<aio.h>int aio_read (struct aiocb *aiocbp);函数功能: aiocbp->io_nbytes, 表示读的字节数; aiocbp->aio_fildes ,表示 读的文件; aiocbp->aio_buf, 表示读到的缓冲区。3异步写函数原型:#include<aio.h>函数功能:该函数返回 aio
38、cbp 指向的结构所表示的错误状态。int aio_write(struct aiocb *aiocbp);函数功能:参数表示同上。4 列出直接 I/O函数原型: #include<aio.h>int lio_listio(int mode,struct aiocb *const list,intnent,struct sigevent *sig);函数功能:该函数允许用一个函数调用初始化一个 I/O 请求列表。5 得到异步 I/O 操作的错误状态 函数原型: #include<aio.h>int aio_error(const struct aiocb *aiocbp
39、);6 得到异步 I/O 操作的返回状态 函数原型: #include<aio.h>ssize_t aio_return(struct aiocb *aiocbp);函数功能:7 删除异步 I/O 请求 函数原型: #include<aio.h>int aio_cancel (int fildes,struct aiocb *aiocbp);函数功能:参数 fildes 是文件描述符, 参数 aiocbp 指向异步 I/O 控制块上的请 求删除部分。8 等待异步 I/O 请求 函数原型: #include<aio.h>int aio_suspend(cons
40、t struct aiocb *const list,int nent,conststruct timespec *timeout);函数功能:标准定义该函数挂起调用进程直到至少一个 list 指向 的异步 I/O 操作完成,或者一个信号中断了一个函数, 或者超时了( timeout 指定)。9 异步 文件同步化 函数原型: #include<aio.h>int aio_fsync(int op,struct aiocb *aiocbp);函数功能:该函数迫使所有与(参数 aiocbp 指向的)结构 aiocb 中 aio_fildes所指定的文件相关异步 I/O 操作进入同步状态
41、。第七章设备和面向类的函数71 基本的终端接口1 接口特性 当一个终端文件被打开,通常它将引起进程等待直到连接被建立。进程组 一个终端可以具有与它相关的前台进程组,它发挥特定的角色,后面会讲到。控制终端 终端存取控制 输入操作和读进程 规范的输入操作非规范模式的输入操作 写数据和输出处理 特殊的符号(INTR,QUIT,ERASE,KILL) modems掉连接关闭终端设备文件2可设置的参数 termios 机构该结构在vtermios.h中定义,在控制特定的终端I/O特性中要用到。输入模式termios c_ifla p 值域标记名描述BRKINT信号中断ICRNL输入时将CR映射到NLIG
42、NBRK忽略中断状态IGNCR忽略CRIGNPAR忽略奇偶错误INLCR输入时将NL映射到CRINPCK输入奇偶校验使能ISTRIPStrip字符IXOFF开始/停止输入控制使能IXON开始/停止输出控制使能PARMRK产生奇偶错误输出模式控制模式标记名描述CLOCAL忽略modems态行CREAD接受使能CSIZE每个字节的位数CS55位CS66位CS77位CS88位CSTOPB发送一个或两个停止位HUPCL在最后的关闭中挂起PARENB奇校验使能PARODD奇校验或偶校验值本地模式标记名描述ECHO响应使能ECHOE响应ETASEgcHOK响应KILLECHONL响应'/n
43、9;canon规范输入IEXTEN扩展函数使能ISIG信号使能Noflsh中断,停止或挂起后关掉flushTOST OP为后台输出发送SIGTTOUtermios c_lflag特殊的控制字符这些特殊的控制字符值在队列c_cc中定义,分为规范和非规范两种模式。波特率值3波特率函数函数原型:#include<termios.h>sp eed_t cfgetos peed(c onst struct termios *termios_ p);int cfsetos peed (struct termios *termios_ p,sp eed_t sp eed);sp eed_t cf
44、getis peed(c onst struct termios *termios_ p);int cfsetispeed(struct termios *termios_p,speed_t speed);函数功能:以上这些接口被用来在 termios 结构获得和设定输入与输出的波特 率值。72 基本的终端接口控制函数1 获得并设定状态函数原型: #include<termios.h>int tcgetattr(int fildes,struct termios *termios_p);int tcsetattr(int fildes,int optional_actions,co
45、nst struct termios * termios_p);函数功能: tcgetattr ()获得 fildes 所确定的文件的参数并将其存储在t ' erops_p 所指向的结构中; tcsetattr ()将设置参数。2 行控制函数函数原型:#include<termios.h>功能:如果进程支持控制终端,该函数设置与终端相关的前台进程组 IDint tcsendbreak(int fildes,int duration);int tcdrain(int fildes);int tcflush(int fildes,int queue_selector);函数功能
46、:int tcflow(int fildes,int action)如果终端使用异步连续数据传输, tcsendbreak ()引起在一段时间内连续的 0'位传输; tcdrain ()等待直到输出传输完毕; tcflush ()和 tcflow ()是溢出的相关处理。(参考第 212 页)3 取得前台进程组的 ID函数原型: #include<sys/types.h>pid_t tgetpgrp(int fildes);功能:4 设置前台进程组 ID函数原型: #include<sys/types.h>int tcsetpgrp(int fildes,pid_
47、t pgrp_id);到 pgrp_id 。第八章基于 C 语言的服务8.1 参考的 C 语言规范1 时间函数的扩展2 setlocale ()函数的扩展函数原型: #include<locale.h>char *setlocale(int category,const char *locale);函数功能: 该函数根据参数 category 和 locale 设置,更改或者查询进程现场。82C 语言输入 / 输出函数映射一个流指针到一个文件描述符函数原型: #include<stdio.h>函数功能:该函数返回一个与流相关的整型文件描述符。根据一个文件描述符打开一个流
48、函数原型: #include<stdio.h>FILE *fdopen(int fildes,const char *type);函数功能:该函数联合一个流和一个文件描述符。其他文件类型函数之间的相互作用一个单一的文件描述说明可以通过流和文件描述符访问,流或者是文件描述符被称作位打开文件的句柄,一个打开文件说明可以有多个句柄。句柄可以在不影响重要的打开文件说明的情况下被创建和删除,创建如 fcntl().dup(),fdopen(),fileno(),fork();删除如 fclose(),close() 。(1) fopen ()随着open ()的调用分配描述符,基础函数为op
49、en()。2) fclose():该函数完成在与FILE流相关的,对文件描述符的close ()功能。3) freopen0:具有fclose ()和fopen ()的特点。4) fflush):如果流可写或者缓存数据还没有写入文件时,该函数标记下基础文件 st_ctime 和 st_mtime 的值。5)fgetc (), fgets (), fread (), getc (), getchar (), gets), scanf (), fscanf ():这些函数标记更新的 st_atime 值。基础函数是 read ()和 lseek ()。fputc(),fputs(),fwrite(
50、),putc(),putchar(),puts(),printf(),fprintf():从以上任一个函数的成功执行到下一个调用(在同一个流中的 fflush ()或fclose ()或 exit ()或 abort (),记下 更新的 st_ctime 和 st_mtime值。基础函数是 write ()和lseek ()。入文件时,该函数标记下文件更新的 st_ctime 和 st_mtime 值。基础函数是7) fseek (), rewind ():如果流可写或者缓存数据还没有写lseek()和 write ()。(8)perror ():记下与标准错误流相关的文件。(9)tmpfil
51、e (): fopen ()执行后为文件分配文件描述符。(10)ftell():基础文件是 lseek ()。执行 fflush ()后执行该函数的结果与执行 fflush 前执行该函数的结果相同。11) 报错12) exit (), abort (): exit ()终止进程的时候要关闭流,abort ()只终止进程对流没有影响。4 文件操作 remove ()函数 该函数和 unlink ()函数的功能一样。83 其他的 C 函数1 非局部跳转 函数原型: #include<setjmp.h>int sigsetjmp(sigjmp_buf env,int savemask);
52、void siglongjmp(sigjmp_buf env,int val);函数功能: sigsetjmp ()宏要与标准中 setjmp ()宏的定义一致,如果参数savemask不为“ 0”,sigsetjmp ()就要保存当前的信号标记作为调用环境的部分。 Siglongjmp ()同理。2 设置时间域 函数原型: #include<time.h>void tzset(void);函数功能:该函数用环境变量 TZ的值来设定时间变化信息。第九章系统数据库91 系统数据库本章描述了两个数据库:组数据库和用户数据库。组数据库包括的信息有:组名,组的数字 ID, 组中的用户列表;
53、用户数据库包含的信息有:用户名,用户的数字ID,组的数字ID,初始化的工 作目录,和初始化的用户程序。92 数据库的访问1 组数据库的访问函数原型: #include<sys/type.h>#include<grp.h> struct group *getgrgid(gid_t gid);struct group *getgrnam(const char *name);函数功能:getgrid ()和getgrnam ()返回指针,它指向一个 structgroup 类型的对象,包含了组数据库的入口。2 用户数据库的访问 函数原型: #include<sys/ty
54、pes.h>#include <pwd.h> struct paswd *getpwuid(uid_t uid);struct passwd *getpwnam(const char *name);函数功能:getpwuid ()和getpwnam返回一个指针,指向 structpasswd类型的一个对象,它包含了用户数据库的入口。第十章数据交换形式101归档/交换文件格式扩展的 tar 格式扩展的 cpio 格式:面向字节的归档格式,包括了文件头,文件名和文件内容。大流量:该格式被看作是字节流。章同步111信号量特征头文件vsemaphore.h定义了 sem_t类型,它用于信号量操作中。sem_t代表了信号量,用文件描述符能够实现这些信号量,应用程序能够打开至少OP EN_MAX这么多的文件和信号量。标准中,头文件 vsema phore.h 能使头文件 vsys/types.h> 和vfcntl.h> 中的符号可见。112 信号量函数1 初始化一个未命名的信号量函数原型: #inxlude<semaphore.h>int sem_init (sem_t *sem,int pshared,unsigned int value)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技教育在课堂中的有效运用计划
- 社区团结互助的活动示范计划
- 《大方县宏能能源开发有限公司贵州省大方县金沙煤田岩脚-白花塔井田煤矿(新建)矿产资源绿色开发利用方案(三合一)》评审意见
- 2025年美丽的大自然标准教案合集
- 规范化销售培训
- 个人年终总结培训
- 透析患者导管感染护理
- Unit 5 Lesson 28 The Study of Living Things2024-2025学年九年级英语上册同步教学设计(冀教版)河北专版
- 2025年安徽货运从业资格证考试500题题库
- 高中数学 第一章 空间几何体 1.2 空间几何体的三视图和直观图 1.2.3 空间几何体的直观图教学实录 新人教A版必修2
- 2025年湖南商务职业技术学院单招职业技能测试题库必考题
- 中储粮黑龙江分公司招聘考试试卷2023
- 化学实验室安全职责分配
- 9 枫树上的喜鹊 【知识精研】语文二年级下册 统编版
- 2025年工程策划勘察设计合作框架协议书
- 2025年哈尔滨铁道职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析
- 国外银发经济发展
- 2025年高考作文素材积累之《人民日报》时评观点摘抄(标题、开头、分论点、结尾)
- 2024年07月上海兴业银行上海分行招考笔试历年参考题库附带答案详解
- 中药玫瑰花培训
- 广东省佛山市(2024年-2025年小学六年级语文)统编版小升初真题((上下)学期)试卷及答案
评论
0/150
提交评论