还剩6页未读,继续阅读
文本内容:
实验5文件系统Linux文件管理.实验目的1掌握Linux提供的文件系统调用的使用方法;2熟悉文件和目录操作的系统调用用户接口;了解操作系统文件系统的工作原理和工作方式.实验内容1利用Linux有关系统调用函数编写一个文件工具filetools要求具有下列功能:★★★★★★★★★★★
0.退出.创建新文件.写文件.读文件.复制文件.修改文件权限.查看文件权限.创建子目录.删除子目录.改变当前目录到指定目录.链接操作★★★★*★★★***代码#includestdio.h#includesys/types.h#includeunistd.h#includefcntl.h#includesys/stat.h#includesyslog.h#includestring.h#includestdlib.hvoidmenuvoid;voidopenfilevoid;voidwritefilevoid;voidreadfilevoid;voidcopyfilevoid;voidchmdvoid;voidckqxvoid;voidcjmlvoid;voidscmlvoid;voidggmlvoid;voidyljvoid;intmainintchoose;intsuliangjin=1;menu;scanf%dMchoose;whilechoose!=0switchchoosecase1:openfile;break;case2:writefile;break;case3:readfile;break;case4:copyfile;break;case5:chmd;break;case6:ckqx;break;case7:cjml;break;case8:scml;break;case9:ggml;break;case1O:ylj;break;menu;scanfn%dHchoose;}return0;voidmenuvoidprintf文件系统\n;printf”
1.创建新文件printf
2.写文件printf
3.读文件\nprintf
4.复制文件\rf;printf5修改文件权限\n;printf
6.查看文件权限\nprintf”.创建子目录\nprintf”8删除子目录\nprintf
9.改变目前目录到指定目录\nprintf
10.链接操作\nprintfO・退出退”;printf”请输入您的选择…\nvoidopenfilevoidintfd;iffd=open7tmp/hello.cM0_CREAT|0_TRUNC|0-RDWR06660perrorC^pen1;elseprintfMopenfile:hileo.c%d\nnfd;ifclosefd0perrornclose1;elseprintfClosehello.c\nn;voidwritefilevoidintfd.sizejen;char*buf=nHello!Tmwritingtothisfile!;Ien=strienbuf;iffd=open7tmp/hello.cH0_CREAT|0_TRUNC|0_RDWR06660perrorCopen1;elseprintfC^penfile:hileo.c%d\nfd;ifsize=writefdbuflen0perrorMwrite;elseprintf”Write:%s\n”buf;ifclosefd0perrorncloseH;elseprintfnClosehello.c\n;voidreadfilevoid{intfdsize;charb
[10];iffd=open7tmp/hello.c0_CREAT|0_TRUNC|0_RDWR06660perrorCopen1;elseprintfMopenfile:hileo.c%d\nnfd;lseekfdOSEEK_SET;ifsize=readfdb100perrorMread”;elseprintfMreadfromfile:%s\nMb;ifclosefd0perrorclose”;elseprintfClosehello.c\n;voidcopyfilevoidiffork==0execlp/bin/cpcp/tmp/hello.c7tmp/he.cNULL;elsewaitO;printf将hello.c复制he.c;voidchmdvoidinta;printf
1.文件主可读可写可执行\rf;printf
2.文件主可读\nprintf3文件主可写\nprintf
4.文件主可执行\n”;printf请输入您的选项\n”;scanfM%da;switchacase1:chmod7tmp/hello.cHS_IRWXU;printfwok!\n;break;case2:chmod7tmp/hello.cS_IRUSR;printfwok!\n;break;case3:chmodC7tmp/hello.c”S」WUSR;printfok!\rT;break;case4:chmod7tmp/hello.cS_IXUSR;printfok!\nw;break;default:printf您选择有误\n;voidckqxvoidchar*path=7bin/lsM;char*argv
[4]={wlsw-rNULL;iffork==0execvpathargv;elsewaitO;voidcjmlvoidifmkdir7tmp/aS_IRWXU0perrorHMkdir;elseprintf创建成功\n;voidscmlvoidifrmdir7tmp/aM0perrorRmdir;elseprintf删除成功\rf;voidggmlvoidifchdir7tmp/bc0perrorchdir;elseprintf更改目录成功\n”;voidyljvoidiflinkhello.cwnh.cw0perrorLink11;elseprintf建立硬连接\n打开文件voidopenfTlcvoid-Iintfd iffd=openw/tnp/helOTRIN|1perroropen*elseprintfopenfilc;hileo.c%d\nifclosetfd0perrorrclose1;IulsuopenfiIe:hilro«c3printfwClosehello.c\n*CloseheIIo.c写文件toilwrbtefIlcvoid|•itIfd•«i•Ieee:Ii4ia-buf-*lb1Io!Irnwiitin^tuthisfiIIcn-•trIsnbu1sirfd=opcn•/trrp/heIIo•*rCL_CXEAT|O_TRpr「「■■■Openw cIscprintfC.openiaIcshaIeo•e%d\n.•fdifCci=3*i1«»f1rbnftOprrror*3itr;cIscprinttWilei%»;\n*♦buftifc1♦«fflOIpcrror9close*;21一openfile:hilco.c3卜WiteFtIIo!IHinttothisfile!IJU・读文件voidreadfiIevoidintfd»size:Icharb
[10]ifCfd=open*/tnp/hcIIo.c*perror*open*;cIscprintfopenfiIc:hileo.cM\n*lteekfd
0.SEEK_SET ifsize*rcadfd9bt10X0perror*read*:cIscprintfreadfromfi.b Iifclotefd0perrorclose*tlu...openfile:hiko3printf*ClotcheIlo.c\ne;re・dfromfiI,滴B|}|CIesche1lo.c复制文件[voidcopyfilevoidh1iffork--0execlp7bin/cpJcp・J/l®p/heIlo.c*t/tnp/hc.c*tFVWVV•■-•―|uait04IprintfyyheIlo.cUl»lbec将heIIo・c义制he.c1hI修改权限:查看权限IvoilckqxvoidIchar•path®*/bin/Is*Ichjrrgv
[4]*|Is*I*MLL};IIifforkM=0Icxecvpaihargv;IIcIse\*oit0创建目录»oidcjmlvoidIiifoldir*/tnp/a*rS_lRWflLJlperror*Mdirw;eheWWTVJCWVTSTprintl9创if成功\n;7|创建成功删除目录voidsemivoidI」rmhM・八呻//0perroMRndir*;cIscprintf成功II更改目录voidggnilCvoidIifchdir/tnp/bc*0p€Tror*chdir*:Iprmtt111*ri:9lb|更戌目录成功6总用SL20-rwr-xr-x1rootroot1294311111500:21Irwr-xr-x1rootroot2519II月1500:
211.c•・一硬连接oidyljvoidifIinkrheIIocr•*h.cw0perrorfLink声摘入您的选力0E立硬连接问题解决方案:.在复制文件时用execlp函数,虽然有复制成功但是他就跳出整个程序后来我在execlp前面加iffork==0就可以咯.硬连接不成功,老是抛出错误信息,后来发现原来是因为我的代码出错,还有我之前已经更改了目录所以就会时常报错.到现在还不知道为什么我读出来的是乱码情解决实验心得体味通过这次实验掌握Linux提供的文件系统调用的使用方法;熟悉文件和目录操作的调用用户接口,了解操作系统文件系统的工作原理和工作方式-ruxr-xr-x1rootroot49310月2416:18c1ient.-ruKr-xr-x1rootroot15748】1月2722:14file!7出「2rvA1rootroot392311月2812:38filei.c-r3rootroot011月2812:46h.c*TUX1rootroot011月2812:47heac-j3rootroot011月2812:46he1lo.c。