Linux系统API函数手册.docx
《Linux系统API函数手册.docx》由会员分享,可在线阅读,更多相关《Linux系统API函数手册.docx(44页珍藏版)》请在课桌文档上搜索。
1、(一)文献操作篇1、creat(建立文献)头文献1 #include2 include3 #include定义函数1intcreat(constchar*pathname,mode_tmode);函数说明参数Pathname指向欲建立的文献途径字符串。CreatO相称于使用下列的调用方式调用OPeno1open(constchar*pathname,(0_CREAT|0_WR0N1.Y|0_TRUNC);错误代码关于参数mode请参考OPenO函数。返回值Creato会返回新的文献描述词,若有错误发生则会返回1,并把错误代码设给errno。EEXIST参数pathname所指的文献已存在。EA
2、CCESS参数pathname所指定的文献不符合所规定测试的权限EROFS欲打开写入权限的文献存在于只读文献系统内EFAU1.T参数pathname指针超过可存取的内存空间EINVA1.参数mode不对的。Enametoolong参数pathname太长。ENOTDIR参数pathname为一目录ENOMEM核心内存局限性E1.OOP参数pathname有过多符号连接问题。EMFI1.E已达成进程可同时打开的文献数上限ENFI1.E已达成系统可同时打开的文献数上限附加说明Creat()无法建立特别的装置文献,假如需要请使用mknod()o2、open(打开文献)头文献1 #include2 #
3、include3 #include定义函数1 iniopen(constchar*pathname,intflags);2 intopen(constchar*pathname,i11tflags,mode_tmode);函数说明参数pathname指向欲打开的文献途径字符串。下列是参数flags所能使用的旗标:C1.RDoN1.Y以只读方式打开文献0.WR0N1.Y以只写方式打开文献C1.RDWR以可读写方式打开文献。上述三种旗标是互斥的,也就是不可同时使用,但可与下列的旗标运用OR(I)运算符组合。C1.CREAT若欲打开的文献不存在则自动建立该文献。O_EXC1.假如O_CREAT也被设
4、立,此指令会去检查文献是否存在。文献若不存在则建立该文献,否则将导致打开文献错误。此外,若O-CREAT与O_EXC1.同时设立,并且欲打开的文献为符号连接,则会打开文献失败。O_NOCTTY假如欲打开的文献为终端机设备时,则不会将该终端机当成进程控制终端机。C1.TRUNC若文献存在并且以可写的方式打开时,此旗标会令文献长度清为0,而本来存于该文献的资料也会消失。O.APPEND当读写文献时会从文献尾开始移动,也就是所写入的数据会以附加的方式加入到文献后面。0_N0NB1.0CK以不可阻断的方式打开文献,也就是无论有无数据读取或等待,都会立即返回进程之中。O.NDE1.AY同O.NONB1.
5、OCKoO_SYNC以同步的方式打开文献。O.NOFO1.1.OW假如参数pathname所指的文献为一符号连接,则会令打开文献失败。o_directory假如参数pathname所指的文献并非为一目录,则会令打开文献失败。此为1.iIWX2.2以后特有的旅标,以避免一些系统安全问题。参数mode则有下列数种组合,只有在建立新文献时才会生效,此外真正建文献时的权限会受到UmaSk值所影响,因此该文献权限应当为(mode-umaks)。SRWXUOO700权限,代表该文献所有者具有可读、可写及可执行的权限。S_IRUSR或SREAD,004(X)权限,代表该文献所有者具有可读取的权限。SWUSR
6、或SWRITE,00200权限,代表该文献所有者具有可写入的权限。S_IXUSR或SEXEC,00100权限,代表该文献所有者具有可执行的权限。SRWXGOoo70权限,代表该文献用户组具有可读、可写及可执行的权限。SJRGRP00040权限,代表该文献用户组具有可读的权限。SWGRPOOo2()权限,代表该文献用户组具有可写入的权限。SXGRP(X)OIO权限,代表该文献用户组具有可执行的权限。SRWXOOOo07权限,代表其他用户具有可读、可写及可执行的权限。SJROTH00004权限,代表其他用户具有可读的权限S_IWOTH00002权限,代表其他用户具有可写入的权限。SJXOTH000
7、01权限,代表其他用户具有可执行的权限。返回值若所有欲核查的权限都通过了检查则返回0值,表达成功,只要有一个权限被严禁则返回-1。错误代码EEXIST参数pathname所指的文献己存在,却使用了C1.CREAT和C1.EXC1.旗标。EACCESS参数pathname所指的文献不符合所规定测试的权限。EROFS欲测试写入权限的文献存在于只读文献系统内。EFAU1.T参数pathname指针超过可存取内存空间。EINVA1.参数mode不对的。Enametoolong参数pathname太长。ENOTDIR参数pathname不是目录。ENOMEM核心内存局限性。E1.OOP参数pathnam
8、e有过多符号连接问题。EIOI/O存取错误3、close(关闭文献)头文献1#include定义函数1intclose(intfd);函数说明当使用完文献后若已不再需要则可使用CIOSe()关闭该文献,二Ck)Se()会让数据写回磁盘,并释放该文献所占用的资源。参数fd为先前由OPeno或Creato所返回的文献描述词。返回值若文献顺利关闭则返回0,发生错误时返回-1。错误代码EBADF参数fd非有效的文献描述词或该文献已关闭。附加说明虽然在进程结束时,系统会自动关闭已打开的文献,但仍建议自行关闭文献,并的确检查返回值。4、read(由已打开的文献读取数据)头文献1#include定义函数1s
9、size_tread(intfci,void*buf,size_tcount);函数说明read。会把参数fd所指的文献传送count个字节到buf指针所指的内存中。若参数count为0,则read()不会有作用并返回0。返回值为实际读取到的字节数,假如返回0,表达已到达文献尾或是无可读取的数据,此外文献读写位置会随读取到的字节移动。附加说明假如顺利read。会返回实际读到的字节数,最佳能将返回值与参数CoUnt作比较,若返回的字节数比规定读取的字节数少,则有也许读到了文献尾、从管道(PiPe)或终端机读取,或者是read()被信号中断了读取动作。当有错误发生时则返回1,错误代码存入e11no
10、中,而文献读写位置则无法预期。错误代码EINTR此调用被信号所中断。EAGAIN当使用不可阻断I/O时(0_NONB1.OCK),若无数据可读取则返回此值。EBADF参数fd非有效的文献描述词,或该文献已关闭。5、write(将数据写入已打开的文献内)头文献1#include定义函数1ssize_twrite(intfd,constvoid*buf,size_tcount);函数说明Wrile()会把参数buf所指的内存写入COUnt个字节到参数fd所指的文献内。当然,文献读写位置也会随之移动。返回值假如顺利Write()会返回实际写入的字节数。当有错误发生时则返回错误代码存入errno中。错
11、误代码ElNTR此调用被信号所中断。EAGAlN当使用不可阻断I/O时(O_NONB1.OCK),若无数据可读取则返回此值。EADF参数fd非有效的文献描述词,或该文献已关闭。6、flock(锁定文献或解除锁定)头文献1#include定义函数1intflock(intfd,intoperation);函数说明fl。Cko会依参数operation所指定的方式对参数fd所指的文献做各种锁定或解除锁定的动作。此函数只能锁定整个文献,无法锁定文献的某一区域。参数operation有下列四种情况:1.OCK_SH建立共享锁定。多个进程可同时对同一个文献作共享锁定。1.OeK_EX建立互斥锁定。一个文
12、献同时只有一个互斥锁定。1.0CK_UN解除文献锁定状态。1.OCK_NB无法建立锁定期,此操作可不被阻断,立即返回进程。通常与1.oCK_SH或1.OCK_EX做OR(I)组合。单一文献无法同时建立共享锁定和互斥锁定,而当使用dup()或fork。时文献描述词不会继承此种锁定。返回值返回0表达成功,若有错误则返回-1,错误代码存于errno。7、ISeek(移动文献的读写位置)头文献1 #include2 #include定义函数1ofCtlseek(intfildes,off1.toffset,intwhence);函数说明每一个已打开的文献都有一个读写位置,当打开文献时通常其读写位置是指
13、向文献开头,若是以附加的方式打开文献(如0_APPEND),则读写位置会指向文献尾。当read。或Write()时,读写位置会随之增长,ISeek()便是用来控制该文献的读写位置。参数fikles为已打开的文献描述词,参数OffSet为根据参数whence来移动读写位置的位移数。参数whence为下列其中一种:SEEK.SET参数OffSet即为新的读写位置。SEEK.CUR以目前的读写位置往后增长OffSet个位移量。SEEK_END将读写位置指向文献尾后再增长OffSet个位移量。当whence值为SEEK_CUR或SEEK_END时,参数offet允许负值的出现。下列是教特别的使用方式:
14、1)欲将读写位置移到文献开头时Jseek(intfildes,O,SEEK.SET);2)欲将读写位置移到文献尾时:lseek(intfildes,O,SEEK_END);3)想要取得目前文献位置时:lseek(intfildes,O,SEEK.CUR);返回值当调用成功时则返回目前的读写位置,也就是距离文献开头多少个字节。若有错误则返回-1,ermo会存放错误代码。附加说明1.inUX系统不允许ISeek()对Hy装置作用,此项动作会令ISeekO返回ESPlPE。8、fcntl(文献描述词操作)头文献1 #include2 #include定义函数1 intfcntl(intfd,intc
15、md);2 intfcntl(intfd,intcmd,longarg);3 intfcntl(intfd,intcmd,structflock*lock);函数说明fcntl()用来操作文献描述词的些特性。参数fd代表欲设立的文献描述词,参数Cmd代表欲操作的指令。有以下几种情况:F_DUPFD用来查找大于或等于参数arg的最小且仍未使用的文献描述词,并且复制参数fd的文献描述词。执行成功则返回新复制的文献描述词。请参考dup2().F_GETFD取得ckse-on-exec旗标。若此旗标的FD_C1.OEXEC位为0,代表在调用exec()相关函数时文献将不会关闭。F_SETFD设立clo
16、se-on-exec旗标。该旗标以参数arg的FD_C1.OEXEC位决定。F_GETF1.取得文献描述词状态旗标,此旗标为OPen()的参数flags。F_SETF1.设立文献描述词状态旗标,参数arg为新旗标,但只允许O_APPEND、O.NONB1.OCK和C1.ASYNC位的改变,其他位的改变将不受影响。F_GET1.K取得文献锁定的状态。F_SET1.K设立文献锁定的状态。此时Hcok结构的1.type值必须是F_RD1.CK、F.WR1.CK或F_UN1.CKo假如无法建立锁定,则返回-1,错误代码为EACCES或EAGAIN。F-SET1.KWF-SET1.K作用相同,但是无法建
17、立锁定期,此调用会一直等到锁定动作成功为止。若在等待锁定的过程中被信号中断时,会立即返回-1,错误代码为ElNTR。参数IOCk指针为flock结构指针,定义如下1structflcok2(3 shortintl.type;/*锁定的状态*/4 shortint1.whence;/*决定1.Start位置*/5 off_tl_start;/*锁定区域的开头位置6 Of1.tUen;/*锁定区域的大小*/7 pid1.Pid;/*锁定动作的进程*/8;囱1.type有三种状态:F_RD1.CK建立一个供读取用的锁定F_WR1.CK建立一个供写入用的锁定F_UN1.CK删除之前建立的锁定l_whe
18、nce也有三种方式:SEEK.SET以文献开头为锁定的起始位置。SEEK.CUR以目前文献读写位置为锁定的起始位置SEEK.END以文献结尾为锁定的起始位置。返回值成功则返回0,若有错误则返回-1,错误因素存于ermo9、fgets(由文献中读取一字符串)头文献1include定义函数1char*fgets(char*s,intsize,FI1.E*stream);函数说明fgets()用来从参数Stream所指的文献内读入字符并存到参数S所指的内存空间,直到出现换行字符、读到文献尾或是已读了SiZe-I个字符为止,最后会加上NU1.1.作为字符串结束。返回值gets。若成功则返回s指针,返回
19、NU1.1.则表达有错误发生。10、fpuis(将一指定的字符串写入文献内)头文献1#include定义函数1intfputs(constchar*s,FI1.E*stream);函数说明fputs()用来将参数S所指的字符串写入到参数Stream所指的文献内。返回值若成功则返回写出的字符个数,返回EoF则表达有错误发生。(二)内存控制篇1、calloc(配置内存空间)头文献1#include定义函数1void*calloc(size_tnmemb,size_tsize);函数说明CalIOC()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用
20、下列的方式效果相同:malloc(nmemb*size);但是,在运用CaHoCO配置内存时会将内存内容初始化为0。返回值若配置成功则返回一指针,失败则返回NU1.1.o2、free(释放原先配置的内存)头文献1#include定义函数1voidfree(void*ptr);函数说明参数Ptr为指向先前由ma11oc()CanOCo或realloc()所返回的内存指针。调用free。后Ptr所指的内存空间便会被收回。假若参数Ptr所指的内存空间已被收回或是未知的内存地址,则调用free()也许会有无法预期的情况发生。若参数Ptr为NU1.1.,则free。不会有任何作用。3、malloc(配置
21、内存空间)头文献1#include定义函数1void*malloc(size_tsize);函数说明malloc()用来配置内存空间,其大小由指定的size决定。返回值若配置成功则返回一指针,失败则返回NU1.1.o范例voidp=malloc(1024);/*配置Ik的内存*/()进程操作篇1、excel(执行文献)头文献1#include定义函数1intexecl(constchar*path,constchar*arg,.);函数说明execl()用来执行参数Path字符串所代表的文献途径,接下来的参数代表执行该文献时传递过去的argv(O)、argvl,最后一个参数必须用空指针(NU1
22、.1.)作结束。返回值假如执行成功则函数不会返回,执行失败则直接返回-1,失败因素存于ermo中。2、execlp(从PATH环境变量中查找文献并执行)头文献#include定义函数1intexeclp(constchar*file,constchar*arg,);函数说明execlp()会从PATH环境变量所指的目录中查找符合参数file的文献名,找到后便执行该文献,然后将第二个以后的参数当做该文献的argv0、argvl最后一个参数必须用空指针(NU1.1.)作结束。返回值假如执行成功则函数不会返回,执行失败则直接返回失败因素存于erm。中。错误代码参考execve()o3、exeev(执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 系统 API 函数 手册

链接地址:https://www.desk33.com/p-1416097.html