Linux系统API函数手册.doc
《Linux系统API函数手册.doc》由会员分享,可在线阅读,更多相关《Linux系统API函数手册.doc(43页珍藏版)》请在咨信网上搜索。
1、(一)文献操作篇1、creat(建立文献)头文献1 #include2 #include3 #include定义函数1 int creat(const char * pathname, mode_tmode);函数说明参数pathname指向欲建立的文献途径字符串。creat()相称于使用下列的调用方式调用open()1 open(const char * pathname ,(O_CREAT|O_WRONLY|O_TRUNC);错误代码关于参数mode请参考open()函数。返回值creat()会返回新的文献描述词,若有错误发生则会返回-1,并把错误代码设给errno。EEXIST 参数pa
2、thname所指的文献已存在。EACCESS 参数pathname 所指定的文献不符合所规定测试的权限EROFS 欲打开写入权限的文献存在于只读文献系统内EFAULT 参数pathname 指针超过可存取的内存空间EINVAL 参数mode 不对的。ENAMETOOLONG 参数pathname太长。ENOTDIR 参数pathname为一目录ENOMEM 核心内存局限性ELOOP 参数pathname有过多符号连接问题。EMFILE 已达成进程可同时打开的文献数上限ENFILE 已达成系统可同时打开的文献数上限附加说明creat()无法建立特别的装置文献,假如需要请使用mknod()。2、o
3、pen(打开文献)头文献1 #include2 #include3 #include定义函数1 int open( const char * pathname, int flags);2 int open( const char * pathname,int flags, mode_t mode);函数说明参数pathname 指向欲打开的文献途径字符串。下列是参数flags 所能使用的旗标:O_RDONLY 以只读方式打开文献O_WRONLY 以只写方式打开文献O_RDWR 以可读写方式打开文献。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标运用OR(|)运算符组合。O_CREA
4、T 若欲打开的文献不存在则自动建立该文献。O_EXCL 假如O_CREAT 也被设立,此指令会去检查文献是否存在。文献若不存在则建立该文献,否则将导致打开文献错误。此外,若O_CREAT与O_EXCL同时设立,并且欲打开的文献为符号连接,则会打开文献失败。O_NOCTTY 假如欲打开的文献为终端机设备时,则不会将该终端机当成进程控制终端机。O_TRUNC 若文献存在并且以可写的方式打开时,此旗标会令文献长度清为0,而本来存于该文献的资料也会消失。O_APPEND 当读写文献时会从文献尾开始移动,也就是所写入的数据会以附加的方式加入到文献后面。O_NONBLOCK 以不可阻断的方式打开文献,也就
5、是无论有无数据读取或等待,都会立即返回进程之中。O_NDELAY 同O_NONBLOCK。O_SYNC 以同步的方式打开文献。O_NOFOLLOW 假如参数pathname 所指的文献为一符号连接,则会令打开文献失败。O_DIRECTORY 假如参数pathname 所指的文献并非为一目录,则会令打开文献失败。此为Linux2.2以后特有的旗标,以避免一些系统安全问题。参数mode 则有下列数种组合,只有在建立新文献时才会生效,此外真正建文献时的权限会受到umask值所影响,因此该文献权限应当为(mode-umaks)。S_IRWXU00700 权限,代表该文献所有者具有可读、可写及可执行的权
6、限。S_IRUSR 或S_IREAD,00400权限,代表该文献所有者具有可读取的权限。S_IWUSR 或S_IWRITE,00200 权限,代表该文献所有者具有可写入的权限。S_IXUSR 或S_IEXEC,00100 权限,代表该文献所有者具有可执行的权限。S_IRWXG 00070权限,代表该文献用户组具有可读、可写及可执行的权限。S_IRGRP 00040 权限,代表该文献用户组具有可读的权限。S_IWGRP 00020权限,代表该文献用户组具有可写入的权限。S_IXGRP 00010 权限,代表该文献用户组具有可执行的权限。S_IRWXO 00007权限,代表其他用户具有可读、可写及
7、可执行的权限。S_IROTH 00004 权限,代表其他用户具有可读的权限S_IWOTH 00002权限,代表其他用户具有可写入的权限。S_IXOTH 00001 权限,代表其他用户具有可执行的权限。返回值若所有欲核查的权限都通过了检查则返回0 值,表达成功,只要有一个权限被严禁则返回-1。错误代码EEXIST 参数pathname 所指的文献已存在,却使用了O_CREAT和O_EXCL旗标。EACCESS 参数pathname所指的文献不符合所规定测试的权限。EROFS 欲测试写入权限的文献存在于只读文献系统内。EFAULT 参数pathname指针超过可存取内存空间。EINVAL 参数mo
8、de 不对的。ENAMETOOLONG 参数pathname太长。ENOTDIR 参数pathname不是目录。ENOMEM 核心内存局限性。ELOOP 参数pathname有过多符号连接问题。EIO I/O 存取错误3、close(关闭文献)头文献1 #include定义函数1 int close(int fd);函数说明当使用完文献后若已不再需要则可使用close()关闭该文献,二close()会让数据写回磁盘,并释放该文献所占用的资源。参数fd为先前由open()或creat()所返回的文献描述词。返回值若文献顺利关闭则返回0,发生错误时返回-1。错误代码EBADF 参数fd 非有效的文
9、献描述词或该文献已关闭。附加说明虽然在进程结束时,系统会自动关闭已打开的文献,但仍建议自行关闭文献,并的确检查返回值。4、read(由已打开的文献读取数据)头文献1 #include定义函数1 ssize_t read(int fd,void * buf ,size_t count);函数说明read()会把参数fd 所指的文献传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,假如返回0,表达已到达文献尾或是无可读取的数据,此外文献读写位置会随读取到的字节移动。附加说明假如顺利read()会返回实际读到的字节数,最
10、佳能将返回值与参数count 作比较,若返回的字节数比规定读取的字节数少,则有也许读到了文献尾、从管道(pipe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回-1,错误代码存入errno中,而文献读写位置则无法预期。错误代码EINTR 此调用被信号所中断。EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。EBADF 参数fd 非有效的文献描述词,或该文献已关闭。5、write(将数据写入已打开的文献内)头文献1 #include定义函数1 ssize_t write (int fd,const void * buf,size
11、_t count);函数说明write()会把参数buf所指的内存写入count个字节到参数fd所指的文献内。当然,文献读写位置也会随之移动。返回值假如顺利write()会返回实际写入的字节数。当有错误发生时则返回-1,错误代码存入errno中。错误代码EINTR 此调用被信号所中断。EAGAIN 当使用不可阻断I/O 时(O_NONBLOCK),若无数据可读取则返回此值。EADF 参数fd非有效的文献描述词,或该文献已关闭。6、flock(锁定文献或解除锁定)头文献1 #include定义函数1 int flock(int fd,int operation);函数说明flock()会依参数o
12、peration所指定的方式对参数fd所指的文献做各种锁定或解除锁定的动作。此函数只能锁定整个文献,无法锁定文献的某一区域。参数operation有下列四种情况:LOCK_SH 建立共享锁定。多个进程可同时对同一个文献作共享锁定。LOCK_EX 建立互斥锁定。一个文献同时只有一个互斥锁定。LOCK_UN 解除文献锁定状态。LOCK_NB 无法建立锁定期,此操作可不被阻断,立即返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。单一文献无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文献描述词不会继承此种锁定。返回值返回0表达成功,若有错误则返回-1,错误代码存于
13、errno。7、lseek(移动文献的读写位置)头文献1 #include2 #include定义函数1 off_t lseek(int fildes,off_t offset ,int whence);函数说明每一个已打开的文献都有一个读写位置,当打开文献时通常其读写位置是指向文献开头,若是以附加的方式打开文献(如O_APPEND),则读写位置会指向文献尾。当read()或write()时,读写位置会随之增长,lseek()便是用来控制该文献的读写位置。参数fildes 为已打开的文献描述词,参数offset 为根据参数whence来移动读写位置的位移数。参数whence为下列其中一种:SE
14、EK_SET 参数offset即为新的读写位置。SEEK_CUR 以目前的读写位置往后增长offset个位移量。SEEK_END 将读写位置指向文献尾后再增长offset个位移量。当whence 值为SEEK_CUR 或SEEK_END时,参数offet允许负值的出现。下列是教特别的使用方式:1) 欲将读写位置移到文献开头时:lseek(int fildes,0,SEEK_SET);2) 欲将读写位置移到文献尾时:lseek(int fildes,0,SEEK_END);3) 想要取得目前文献位置时:lseek(int fildes,0,SEEK_CUR);返回值当调用成功时则返回目前的读写位
15、置,也就是距离文献开头多少个字节。若有错误则返回-1,errno 会存放错误代码。附加说明Linux系统不允许lseek()对tty装置作用,此项动作会令lseek()返回ESPIPE。8、fcntl(文献描述词操作)头文献1 #include2 #include定义函数1 int fcntl(int fd , int cmd);2 int fcntl(int fd,int cmd,long arg);3 int fcntl(int fd,int cmd,struct flock * lock);函数说明fcntl()用来操作文献描述词的一些特性。参数fd代表欲设立的文献描述词,参数cmd代表
16、欲操作的指令。有以下几种情况:F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文献描述词,并且复制参数fd的文献描述词。执行成功则返回新复制的文献描述词。请参考 dup2()。F_GETFD取得close-on-exec旗标。若此旗标的FD_CLOEXEC位为0,代表在调用exec()相关函数时文献将不会关闭。F_SETFD 设立close-on-exec 旗标。该旗标以参数arg 的FD_CLOEXEC位决定。F_GETFL 取得文献描述词状态旗标,此旗标为open()的参数flags。F_SETFL 设立文献描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O_NO
17、NBLOCK和O_ASYNC位的改变,其他位的改变将不受影响。F_GETLK 取得文献锁定的状态。F_SETLK 设立文献锁定的状态。此时flcok 结构的l_type 值必须是F_RDLCK、F_WRLCK或F_UNLCK。假如无法建立锁定,则返回-1,错误代码为EACCES 或EAGAIN。F_SETLKW F_SETLK 作用相同,但是无法建立锁定期,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为EINTR。参数lock指针为flock 结构指针,定义如下1 struct flcok2 3 short int l_type; /* 锁定的状
18、态*/4 short int l_whence;/*决定l_start位置*/5 off_t l_start; /*锁定区域的开头位置*/6 off_t l_len; /*锁定区域的大小*/7 pid_t l_pid; /*锁定动作的进程*/8 ;l_type 有三种状态:F_RDLCK 建立一个供读取用的锁定F_WRLCK 建立一个供写入用的锁定F_UNLCK 删除之前建立的锁定l_whence 也有三种方式:SEEK_SET 以文献开头为锁定的起始位置。SEEK_CUR 以目前文献读写位置为锁定的起始位置SEEK_END 以文献结尾为锁定的起始位置。返回值成功则返回0,若有错误则返回-1,
19、错误因素存于errno.9、fgets(由文献中读取一字符串)头文献1 include定义函数1 char * fgets(char * s,int size,FILE * stream);函数说明fgets()用来从参数stream所指的文献内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文献尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。返回值gets()若成功则返回s指针,返回NULL则表达有错误发生。10、fputs(将一指定的字符串写入文献内)头文献1 #include定义函数1 int fputs(const char * s,FILE * str
20、eam);函数说明fputs()用来将参数s所指的字符串写入到参数stream所指的文献内。返回值若成功则返回写出的字符个数,返回EOF则表达有错误发生。(二)内存控制篇1、calloc(配置内存空间)头文献1 #include 定义函数1 void *calloc(size_t nmemb,size_t size);函数说明calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);但是,在运用calloc()配置内存时会将内存内容初始化为0。返回值若配置成功则返回一指针,失败则返
21、回NULL。2、free(释放原先配置的内存)头文献1 #include定义函数1 void free(void *ptr);函数说明参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()也许会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。3、malloc(配置内存空间)头文献1 #include定义函数1 void * malloc(size_t size);函数说明malloc()用来配置内存空间,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统 API 函数 手册
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。