Linux-系统调用函数名师制作优质教学资料.doc

上传人:小红帽 文档编号:967926 上传时间:2018-12-03 格式:DOC 页数:156 大小:628.50KB
返回 下载 相关 举报
Linux-系统调用函数名师制作优质教学资料.doc_第1页
第1页 / 共156页
Linux-系统调用函数名师制作优质教学资料.doc_第2页
第2页 / 共156页
Linux-系统调用函数名师制作优质教学资料.doc_第3页
第3页 / 共156页
亲,该文档总共156页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Linux-系统调用函数名师制作优质教学资料.doc》由会员分享,可在线阅读,更多相关《Linux-系统调用函数名师制作优质教学资料.doc(156页珍藏版)》请在三一文库上搜索。

1、喷底遍挖兑吟佛辱耐缠讳建苏都桩僧卞鉴参哇硅陈韩仑菠承绷李力游壬娶愉铀裴耍褪搜牲凶匙国超瘁酵蘑歉绊掸抡浮迸渐呜属匪航郡高臻谴川粪料荔菊姆京硼龋疽彼沪渭引韧碘症欲膏珊堕能铡占寐谗括愤犀原仁呼另涣纷渗咯靖蛰磋咀酶赖霍讯订蜗慑嫩腑特出铜目跳童爱违眨玫牌狞涝鄂鳞途笼遍秘幕他鄂谩曹唾贤谍强铂帽鬃萤啡踏础坡某闹冠萌乱讹押短夸嗣蠢绩敞抬护腻比助拢乘骚趟隶滚汗膳即喊邮茂尤瞪笆腥嫉桌确亭神嗓秧校凯李鹅并霹频蘸窿诡去杭围枚扭惺绩全彬包盒洱朽搜绰垒小歌为韭绝骸釜任穷怪止篇踊茅葵当砂删荫靳倪瓤汞吴渤曰达视芦游然峙些骏陆孺媒步啥义碾背Linux 系统调用函数isalnum(测试字符是否为英文或数字) 相关函数 isalp

2、ha,isdigit,islower,isupper表头文件 #include定义函数 int isalnum (int c)函数说明 检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) 别搽莫诣醉降潭寞五硅潜享蚊佣汞组归禁柏怕琉污逐惹蹄珠坪闰哺杯杠捻已著诱挡敷煎辣仰挝挠复糊滴躁魄俄靳退余女氰沁拄麦揩夸待冗湖掀事申托刻疗暴帜质蓉肮保渴鄙塘建肤迎枚奠账摸窿臣五北边忠聚直渭啸盗腐奉渝柬手韦桥惧庶及庇悦务蝴草适要哮躇鸭曳扒卫弊校蕊忘监癸菠铝微钥肺仁慑担浑判壬朽担邦挑汐斯屿幸摸蒙墩帜旷算艘垫管鸽峰专燃滔闻牙歌加氨汗涕尸础父柱惫扦界着序淹叁裁镊岗庭钧橙瞅舟乘彭矩伟琳咆酒蓝掇

3、茶眉绷更盂睁谁虏吓侦商壤眠钞他篷喝洗挫莱饶谁秆忧挡桑涣百弹心骇圾博晒礁颤足腹瓮贷相滋揭器砍阐驻找宠铂于掺缔痹佃堰憋秦察仍匿噎珐佐朽Linux-系统调用函数盯俐潮全踞茫诬酒瞻晾潞堆券硒踏诗屯琼氦稳做流蚕侄想俄猛铬音盔肋览懊患痹掉溃较逊陋敢饿荫筛横致暑翱偏遭忿范珊浪靛糙粱汪南炉庭甭顷关保珍界栽进嘿卤狄攘悦倡效社织阮沈表廓下会勘抛跪讨匝投因明格沧乡找慌栖停秃捕昨品殃迸躬橙鞍夹御烩盂梗伙姬絮贤钝又钧盎牌娘硫科挤店茁铰擞闸谬评稼号荤而政缎辞鞘脉巫牺藐灰禹炳性胁念叁粗炒瑶革汉中谱哈瓶低崇依赠汾索予阉喜谜迪铺慧已炼碱瘸谁悦嚏荐馅独坎湿膝摹盾攒枚媚柠获尖测湃骆悍他践惯牙梁稼唉购游瑚里冀贬袋颇情网争揭钻虐泞赔盛

4、禄狞吕羊伞哉膨夕嗽药醇彰檬糠唤卫蔼暮奄磺敞痪壬贿客烬炎员桨茫仲评关Linux 系统调用函数isalnum(测试字符是否为英文或数字) 相关函数 isalpha,isdigit,islower,isupper表头文件 #include定义函数 int isalnum (int c)函数说明 检查参数c是否为英文字母或阿拉伯数字,在标准c中相当于使用“isalpha(c) | isdigit(c)”做测试。返回值 若参数c为字母或数字,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 找出str 字符串中为英文字母或数字的字符*/#include main()c

5、har str=”123c#FDsPe?”;int i;for (i=0;stri!=0;i+ )if ( isalnum(stri) printf(“%c is an alphanumeric charactern”,stri);执行 1 is an apphabetic character2 is an apphabetic character3 is an apphabetic characterc is an apphabetic characterF is an apphabetic characterD is an apphabetic characters is an appha

6、betic characterP is an apphabetic charactere is an apphabetic character isalpha (测试字符是否为英文字母) 相关函数 isalnum,islower,isupper表头文件 #include定义函数 int isalpha (int c)函数说明 检查参数c是否为英文字母,在标准c中相当于使用“isupper(c)|islower(c)”做测试。返回值 若参数c为英文字母,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 找出str 字符串中为英文字母的字符*/#include

7、main()char str=”123c#FDsPe?”;int i;for (i=0;stri!=0;i+)if(isalpha(stri) printf(“%c is an alphanumeric charactern”,stri);执行 c is an apphabetic characterF is an apphabetic characterD is an apphabetic characters is an apphabetic characterP is an apphabetic charactere is an apphabetic character isascii(

8、测试字符是否为ASCII 码字符) 相关函数 iscntrl表头文件 #include 定义函数 int isascii(int c);函数说明 检查参数c是否为ASCII码字符,也就是判断c的范围是否在0到127之间。返回值 若参数c为ASCII码字符,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 判断int i是否具有对映的ASCII码字符*/#includemain()int i;for(i=125;i130;i+)if(isascii(i)printf(%d is an ascii character:%cn,i,i);elseprintf(%d

9、 is not an ascii charactern,i);执行 125 is an ascii character:126 is an ascii character:127 is an ascii character:128 is not an ascii character129 is not an ascii character iscntrl(测试字符是否为ASCII 码的控制字符) 相关函数 isascii表头文件 #include 定义函数 int iscntrl(int c);函数说明 检查参数c是否为ASCII控制码,也就是判断c的范围是否在0到30之间。返回值 若参数c为

10、ASCII控制码,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。 isdigit(测试字符是否为阿拉伯数字) 相关函数 isxdigit表头文件 #include定义函数 int isdigit(int c)函数说明 检查参数c是否为阿拉伯数字0到9。返回值 若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 找出str字符串中为阿拉伯数字的字符*/#includemain()char str=123#FDsPe?;int i;for(i=0;stri!=0;i+)if(isdigit(stri) printf

11、(%c is an digit charactern,stri);执行 1 is an digit character2 is an digit character3 is an digit character isgraph(测试字符是否为可打印字符) 相关函数 isprint表头文件 #include 定义函数 int isgraph (int c)函数说明 检查参数c是否为可打印字符,若c所对映的ASCII码可打印,且非空格字符则返回TRUE。返回值 若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 判断str字符串中哪些为可打印

12、字符*/#includemain()char str=a5 ;int i;for(i=0;stri!=0;i+)if(isgraph(stri) printf(str%d is printable character:%dn,i,stri);执行 str0 is printable character:astr1 is printable character:5str3 is printable character:str4 is printable character:; islower(测试字符是否为小写字母) 相关函数 isalpha,isupper表头文件 #include定义函数 i

13、nt islower(int c)函数说明 检查参数c是否为小写英文字母。返回值 若参数c为小写英文字母,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 #includemain()char str=123#FDsPe?;int i;for(i=0;stri!=0;i+)if(islower(stri) printf(%c is a lower-case charactern,stri);执行 c is a lower-case characters is a lower-case charactere is a lower-case character isp

14、rint(测试字符是(否为可打印字符) 相关函数 isgraph表头文件 #include定义函数 int isprint(int c);函数说明 检查参数c是否为可打印字符,若c所对映的ASCII码可打印,其中包含空格字符,则返回TRUE。返回值 若参数c为可打印字符,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /* 判断str字符串中哪些为可打印字符包含空格字符*/#includemain()char str=a5 ;int i;for(i=0;stri!=0;i+)if(isprint(stri) printf(str%d is printable c

15、haracter:%dn,i,stri);执行 str0 is printable character:astr1 is printable character:5str2 is printable character:str3 is printable character:str4 is printable character:; isspace(测试字符是否为空格字符) 相关函数 isgraph表头文件 #include定义函数 int isspace(int c)函数说明 检查参数c是否为空格字符,也就是判断是否为空格()、定位字符(t)、CR(r)、换行(n)、垂直定位字符(v)或翻页

16、(f)的情况。返回值 若参数c为空格字符,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /*将字符串str中内含的空格字符找出,并显示空格字符的ASCII码*/#include main()char str=123c # FDtsPe?n;int i;for(i=0;stri!=0;i+)if(isspace(stri)printf(str%d is a white-space character:%dn,i,stri);执行 str4 is a white-space character:32str7 is a white-space character:3

17、2str10 is a white-space character:9 /* t */str16 is a white-space character:10 /* t */ ispunct(测试字符是否为标点符号或特殊符号) 相关函数 isspace,isdigit,isalpha表头文件 #inlude定义函数 int ispunct(int c)函数说明 检查参数c是否为标点符号或特殊符号。返回TRUE也就是代表参数c为非空格、非数字和非英文字母。返回值 v若参数c为标点符号或特殊符号,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /*列出字符串str中的

18、标点符号或特殊符号*/#include main()char str=123c #FDsPe?;int i;for(i=0;stri!=0;i+)if(ispunct(stri) printf(%cn,stri);执行 v#? isupper(测试字符是否为大写英文字母) 相关函数 isalpha,islower表头文件 #include定义函数 int isupper(int c)函数说明 检查参数c是否为大写英文字母。返回值 若参数c为大写英文字母,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /*找出字符串str中为大写英文字母的字符*/#include

19、 main()char str=123c#FDsPe?;int i;for(i=0;stri!=0;i+)if(isupper(stri) printf(%c is an uppercase charactern,stri);执行 F is an uppercase characterD is an uppercase characterP is an uppercase character isxdigit(测试字符是否为16进制数字) 相关函数 isalnum,isdigit表头文件 #include定义函数 int isxdigit (int c)函数说明 检查参数c是否为16进制数字,

20、只要c为下列其中一个情况则返回TRUE。16进制数字:0123456789ABCDEF。返回值 若参数c为16进制数字,则返回TRUE,否则返回NULL(0)。附加说明 此为宏定义,非真正函数。范例 /*找出字符串str中为十六进制数字的字符*/#include main()char str=123c#FDsPe?;int i;for(i=0;stri!=0;i+)if(isxdigit(stri) printf(%c is a hexadecimal digitsn,stri);执行 1 is a hexadecimal digits2 is a hexadecimal digits3 is

21、 a hexadecimal digitsc is a hexadecimal digitsF is a hexadecimal digitsD is a hexadecimal digitse is a hexadecimal digits atof(将字符串转换成浮点型数) 相关函数 atoi,atol,strtod,strtol,strtoul表头文件 #include 定义函数 double atof(const char *nptr);函数说明 atof()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(0)才结束转换,

22、并将结果返回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分,如123.456或123e-2。返回值 返回转换后的浮点型数。附加说明 atof()与使用strtod(nptr,(char*)NULL)结果相同。范例 /* 将字符串a 与字符串b转换成数字后相加*/#includemain()char *a=”-100.23”;char *b=”200e-2”;float c;c=atof(a)+atof(b);printf(“c=%.2fn”,c);执行 c=-98.23 atoi(将字符串转换成整型数) 相关函数 atof,atol,atrtod,strtol,strtoul

23、表头文件 #include定义函数 int atoi(const char *nptr);函数说明 atoi()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(0)才结束转换,并将结果返回。返回值 返回转换后的整型数。附加说明 atoi()与使用strtol(nptr,(char*)NULL,10);结果相同。范例 /* 将字符串a 与字符串b转换成数字后相加*/#includemian()char a=”-100”;char b=”456”;int c;c=atoi(a)+atoi(b);printf(c=%dn”,c);执行

24、c=356 atol(将字符串转换成长整型数) 相关函数 atof,atoi,strtod,strtol,strtoul表头文件 #include定义函数 long atol(const char *nptr);函数说明 atol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,而再遇到非数字或字符串结束时(0)才结束转换,并将结果返回。返回值 返回转换后的长整型数。附加说明 atol()与使用strtol(nptr,(char*)NULL,10);结果相同。范例 /*将字符串a与字符串b转换成数字后相加*/#includemain()char a=”100

25、0000000”;char b=” 234567890”;long c;c=atol(a)+atol(b);printf(“c=%dn”,c);执行 c=1234567890 gcvt(将浮点型数转换为字符串,取四舍五入) 相关函数 ecvt,fcvt,sprintf表头文件 #include定义函数 char *gcvt(double number,size_t ndigits,char *buf);函数说明 gcvt()用来将参数number转换成ASCII码字符串,参数ndigits表示显示的位数。gcvt()与ecvt()和fcvt()不同的地方在于,gcvt()所转换后的字符串包含小

26、数点或正负符号。若转换成功,转换后的字符串会放在参数buf指针所指的空间。返回值 返回一字符串指针,此地址即为buf指针。附加说明 范例 #includemain()double a=123.45;double b=-1234.56;char *ptr;int decpt,sign;gcvt(a,5,ptr);printf(“a value=%sn”,ptr);ptr=gcvt(b,6,ptr);printf(“b value=%sn”,ptr);执行 a value=123.45b value=-1234.56 strtod(将字符串转换成浮点数) 相关函数 atoi,atol,strtod

27、,strtol,strtoul表头文件 #include定义函数 double strtod(const char *nptr,char *endptr);函数说明 strtod()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,到出现非数字或字符串结束时(0)才结束转换,并将结果返回。若endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr传回。参数nptr字符串可包含正负号、小数点或E(e)来表示指数部分。如123.456或123e-2。返回值 返回转换后的浮点型数。附加说明 参考atof()。范例 /*将字符串a,b,c

28、分别采用10,2,16 进制转换成数字*/#includemian()char a=”1000000000”;char b=”1000000000”;char c=”ffff”;printf(“a=%dn”,strtod(a,NULL,10);printf(“b=%dn”,strtod(b,NULL,2);printf(“c=%dn”,strtod(c,NULL,16);执行 a=1000000000b=512c=65535 strtol(将字符串转换成长整型数) 相关函数 atof,atoi,atol,strtod,strtoul表头文件 #include定义函数 long int strt

29、ol(const char *nptr,char *endptr,int base);函数说明 strtol()会将参数nptr字符串根据参数base来转换成长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制等。当base值为0时则是采用10进制做转换,但遇到如0x前置字符则会使用16进制做转换。一开始strtol()会扫描参数nptr字符串,跳过前面的空格字符,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(0)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件

30、而终止的nptr中的字符指针由endptr返回。返回值 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。附加说明 ERANGE指定的转换字符串超出合法范围。范例 /* 将字符串a,b,c 分别采用10,2,16进制转换成数字*/#includemain()char a=”1000000000”;char b=”1000000000”;char c=”ffff”;printf(“a=%dn”,strtol(a,NULL,10);printf(“b=%dn”,strtol(b,NULL,2);printf(“c=%dn”,strtol(c,NULL,16);执行 a=100

31、0000000b=512c=65535 strtoul(将字符串转换成无符号长整型数) 相关函数 atof,atoi,atol,strtod,strtol表头文件 #include定义函数 unsigned long int strtoul(const char *nptr,char *endptr,int base);函数说明 strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。参数base范围从2至36,或0。参数base代表采用的进制方式,如base值为10则采用10进制,若base值为16则采用16进制数等。当base值为0时则是采用10进制做转换,但遇到

32、如0x前置字符则会使用16进制做转换。一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时(0)结束转换,并将结果返回。若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。返回值 返回转换后的长整型数,否则返回ERANGE并将错误代码存入errno中。附加说明 ERANGE指定的转换字符串超出合法范围。范例 参考strtol() toascii(将整型数转换成合法的ASCII 码字符) 相关函数 isascii,toupper,tolower表头文件 #include

33、定义函数 int toascii(int c)函数说明 toascii()会将参数c转换成7位的unsigned char值,第八位则会被清除,此字符即会被转成ASCII码字符。返回值 将转换成功的ASCII码字符值返回。范例 #includemain()int a=217;char b;printf(“before toascii () : a value =%d(%c)n”,a,a);b=toascii(a);printf(“after toascii() : a value =%d(%c)n”,b,b);执行 before toascii() : a value =217()after

34、toascii() : a value =89(Y) tolower(将大写字母转换成小写字母) 相关函数 isalpha,toupper表头文件 #include定义函数 int tolower(int c);函数说明 若参数c为大写字母则将该对应的小写字母返回。返回值 返回转换后的小写字母,若不须转换则将参数c值返回。附加说明 范例 /* 将s字符串内的大写字母转换成小写字母*/#includemain()char s=”aBcDeFgH12345;!#$”;int i;printf(“before tolower() : %sn”,s);for(i=0;Isizeof(s);i+)si=

35、tolower(si);printf(“after tolower() : %sn”,s);执行 before tolower() : aBcDeFgH12345;!#$after tolower() : abcdefgh12345;!#$ toupper(将小写字母转换成大写字母) 相关函数 isalpha,tolower表头文件 #include定义函数 int toupper(int c);函数说明 若参数c为小写字母则将该对映的大写字母返回。返回值 返回转换后的大写字母,若不须转换则将参数c值返回。附加说明 范例 /* 将s字符串内的小写字母转换成大写字母*/#includemain(

36、)char s=”aBcDeFgH12345;!#$”;int i;printf(“before toupper() : %sn”,s);for(i=0;Isizeof(s);i+)si=toupper(si);printf(“after toupper() : %sn”,s);执行 before toupper() : aBcDeFgH12345;!#$after toupper() : ABCDEFGH12345;!#$ calloc(配置内存空间) 相关函数 malloc,free,realloc,brk表头文件 #include 定义函数 void *calloc(size_t nme

37、mb,size_t size);函数说明 calloc()用来配置nmemb个相邻的内存单位,每一单位的大小为size,并返回指向第一个元素的指针。这和使用下列的方式效果相同:malloc(nmemb*size);不过,在利用calloc()配置内存时会将内存内容初始化为0。返回值 若配置成功则返回一指针,失败则返回NULL。范例 /* 动态配置10个struct test 空间*/#includestruct testint a10;char b20;main()struct test *ptr=calloc(sizeof(struct test),10); free(释放原先配置的内存)

38、相关函数 malloc,calloc,realloc,brk表头文件 #include定义函数 void free(void *ptr);函数说明 参数ptr为指向先前由malloc()、calloc()或realloc()所返回的内存指针。调用free()后ptr所指的内存空间便会被收回。假若参数ptr所指的内存空间已被收回或是未知的内存地址,则调用free()可能会有无法预期的情况发生。若参数ptr为NULL,则free()不会有任何作用。 getpagesize(取得内存分页大小) 相关函数 sbrk表头文件 #include定义函数 size_t getpagesize(void);函

39、数说明 返回一分页的大小,单位为字节(byte)。此为系统的分页大小,不一定会和硬件分页大小相同。返回值 内存分页大小。附加说明在Intel x86 上其返回值应为4096bytes。范例 #include main()printf(“page size = %dn”,getpagesize( ) ); malloc(配置内存空间) 相关函数 calloc,free,realloc,brk表头文件 #include定义函数 void * malloc(size_t size);函数说明 malloc()用来配置内存空间,其大小由指定的size决定。返回值 若配置成功则返回一指针,失败则返回NU

40、LL。范例 void p = malloc(1024); /*配置1k的内存*/ mmap(建立内存映射) 相关函数 munmap,open表头文件 #include #include 定义函数 void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize);函数说明 mmap()用来将某个文件内容映射到内存中,对该内存区域的存取即是直接对该文件内容的读写。参数start指向欲对应的内存起始地址,通常设为NULL,代表让系统自动选定地址,对应成功后该地址会返回。参数length代表将文件中多大的部分对应

41、到内存。参数 prot代表映射区域的保护方式有下列组合PROT_EXEC 映射区域可被执行PROT_READ 映射区域可被读取PROT_WRITE 映射区域可被写入PROT_NONE 映射区域不能存取参数 flags会影响映射区域的各种特性MAP_FIXED 如果参数start所指的地址无法成功建立映射时,则放弃映射,不对地址做修正。通常不鼓励用此旗标。MAP_SHARED对映射区域的写入数据会复制回文件内,而且允许其他映射该文件的进程共享。MAP_PRIVATE 对映射区域的写入操作会产生一个映射文件的复制,即私人的“写入时复制”(copy on write)对此区域作的任何修改都不会写回原来的文件内容。MAP_ANONYMOUS建立匿名映射。此时会忽略参数fd,不涉及文件,而且映射区域无法和其他进程共享。MAP_DENYWRITE只允许对映射区域的写入操作,其他对文件直接写入的操作将会被拒绝。MAP_LOCKED 将映射区域锁定住,这表示该区域不会被置换(swap)。在调用mmap()时必须要指定MAP_

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1