




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)報(bào)告5課程名稱: Linux程序設(shè)計(jì) 實(shí)驗(yàn)名稱: Linux文件操作 學(xué)生姓名: 班級(jí): 學(xué)號(hào): 指導(dǎo)老師: 成績(jī): 一、實(shí)驗(yàn)?zāi)康?.掌握系統(tǒng)函數(shù)system、chmod、stat的應(yīng)用;2.掌握常用文件類(lèi)型判斷的程序設(shè)計(jì);3.掌握有關(guān)文件目錄操作函數(shù)scandir等的應(yīng)用。二、實(shí)驗(yàn)任務(wù)與要求1.應(yīng)用函數(shù)system、chmod、stat獲取文件屬性的程序設(shè)計(jì);2.使用文件屬性st_mode判斷文件類(lèi)型的程序設(shè)計(jì);3.文件目錄操作函數(shù)scandir等的程序設(shè)計(jì)。三、實(shí)驗(yàn)工具與準(zhǔn)備計(jì)算機(jī)PC機(jī),Linux Ubuntu操作系統(tǒng)四、實(shí)驗(yàn)步驟與操作指導(dǎo)1.調(diào)試下列程序。 操作步驟步驟1 編輯源程
2、序代碼。rootlocalhost root#vi 5-1.c程序代碼如下:/*5-1.c 獲取“/etc/passwd”文件的大小*/#include<unistd.h>#include<sys/stat.h> /*文件預(yù)處理,包含stat函數(shù)庫(kù)*/int main () /*C程序的主函數(shù),開(kāi)始入口*/struct stat buf;system("vim /home/liu");chmod("/home/liu",S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH); stat("/home/liu&q
3、uot;,&buf);printf("“/etc/passwd”文件的大小是:%dn",buf.st_size);return 0;步驟2 編譯程序。rootlocalhost root#gcc -o 5-1 5-1.c步驟3 執(zhí)行程序。rootlocalhost root#./5-1 問(wèn)題思考:(1)修改程序,能夠顯示文件權(quán)限的所有者及最后一次文件修改的時(shí)間;(2)終端命令ls有使用格式:“l(fā)s -l”,請(qǐng)修改程序,程序的功能盡可能接近此命令文件。2程序設(shè)計(jì)題。設(shè)計(jì)一個(gè)程序,要求判斷“/etc/passwd”的文件類(lèi)型。提示:使用st_mode屬性,可以使用幾個(gè)宏
4、來(lái)判斷:S_ISLNK(st_mode) 是否是一個(gè)連接,S_ISREG是否是一個(gè)常規(guī)文件,S_ISDIR是否是一個(gè)目錄,S_ISCHR是否是一個(gè)字符設(shè)備,S_ISBLK是否是一個(gè)塊設(shè)備,S_ISFIFO是否是一個(gè)FIFO文件,S_ISSOCK是否是一個(gè)SOCKET文件。最后一次文件修改的時(shí)間3調(diào)試下列程序。程序的功能是打印系統(tǒng)目錄“/etc/rc.d”下所有的文件和子目錄的名字。操作步驟步驟1 編輯源程序代碼。rootlocalhost root#vi 5-2.c程序代碼如下: /*5-2.c程序:讀取系統(tǒng)目錄文件“/etc/rc.d”中所有的目錄結(jié)構(gòu)*/#include<stdio.
5、h>#include<sys/types.h>#include<dirent.h>#include<unistd.h>int main()DIR * dir;struct dirent * ptr;dir=opendir("/etc/rc.d");printf("/etc/rc.d目錄中文件或子目錄有:n");while(ptr = readdir(dir)!=NULL)printf("%sn",ptr->d_name);closedir(dir);問(wèn)題思考:(1)修改程序,要求讀取“/
6、etc”目錄下所有的目錄結(jié)構(gòu),并依字母順序排列。#include<dirent.h>考慮以下語(yǔ)句:scandir("/etc",&namelist,0,alphasort);程序段:while(n-) printf("%sn", namelistn->d_name); free(namelistn);4. 調(diào)試并分析下列程序的結(jié)果。程序的功能是用遞歸的方法列出某一目錄下的全部文件的大小和文件夾及創(chuàng)建日期,包括子文件和子文件夾。操作步驟步驟1 編輯源程序代碼。rootlocalhost root#vi 5-3.c程序代碼如下: #
7、include<stdio.h>#include<time.h>#include<linux/types.h>#include<dirent.h>#include<sys/stat.h>#include<unistd.h>#include<string.h>char *wday="日","一","二","三","四","五","六"void list(char *name,
8、int suojin) DIR *dirname; struct dirent *content; struct stat sb; struct tm *ctime; int i; if(dirname=opendir(name)=NULL) printf("該目錄不存在n"); return; chdir(name);/*改換工作目錄*/ while(content=readdir(dirname)!=NULL) for(i=0;i<suojin;i+) putchar('t'); if(content->d_type=4) printf(&q
9、uot;目錄t"); else if(content->d_type=8) printf("文件t"); else printf("其他t"); stat(content->d_name,&sb); ctime=gmtime(&sb.st_mtime); printf("%d年%d月%d日 星期%s %d:%d:%dt",ctime->tm_year+1900, 1+ctime->tm_mon,ctime->tm_mday,wdayctime->tm_wday,ctime-
10、>tm_hour,ctime->tm_min,ctime->tm_sec);printf("%dt",sb.st_size);printf("%sn",content->d_name);/*列出目錄或文件的相關(guān)信息*/if(content->d_type=4&&strcmp(content->d_name,".")&&strcmp(content->d_name,".") list(content->d_name,suojin+1);/
11、*如果是目錄,則遞歸列出目錄里的內(nèi)容*/ closedir(dirname); chdir(".");/*當(dāng)該層目錄中的文件列完后,返回父目錄*/int main(int argc,char *argv)char name256; printf("類(lèi)型t最后修改時(shí)間ttt大小t文件名n"); printf("*n"); if(argc=1) printf("Enter directory name:"); scanf("%s",name); list(name,0); else list(argv1,0); 五、實(shí)驗(yàn)結(jié)果記錄 11(1)1(2)2、3、3(1)4、先用if語(yǔ)句判斷輸入的是否存在,再用while判斷是文件還是目錄,列出目錄或文件的相關(guān)信息。如果是目錄,則遞歸列出目錄里的內(nèi)容,當(dāng)該層目錄中的文件列完后,返回父目錄六、實(shí)驗(yàn)結(jié)果分析1、st_uid是
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 水利實(shí)務(wù)試題及答案
- 白庇中醫(yī)護(hù)理方案
- 喉罩的護(hù)理措施
- IT培訓(xùn)咨詢師年中分享
- 2025年 東營(yíng)市中醫(yī)院招聘考試試卷附答案
- 2025年中國(guó)噴霧曬黑機(jī)行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 銷(xiāo)售員工衛(wèi)生培訓(xùn)
- 信息技術(shù)培訓(xùn)小結(jié)
- 教師安全培訓(xùn)會(huì)
- 現(xiàn)代心血管病護(hù)理
- 天津大洋寧夏隆德萬(wàn)頭高端肉牛全產(chǎn)業(yè)鏈建設(shè)項(xiàng)目環(huán)境影響報(bào)告書(shū)
- 壯醫(yī)藥水蛭療法
- 中藥熏蒸的護(hù)理
- 中職學(xué)校計(jì)算機(jī)基礎(chǔ)知識(shí)復(fù)習(xí)考試題庫(kù)(附答案)
- 拼多多第三方誘導(dǎo)承諾書(shū)
- 不良資產(chǎn)項(xiàng)目律師法律盡調(diào)報(bào)告(模板)
- 水龍頭知識(shí)培訓(xùn)課件
- 醫(yī)療設(shè)備技術(shù)參數(shù)需求表
- 0-3歲嬰幼兒護(hù)理與急救-嬰幼兒意外傷害急救
- 工貿(mào)企業(yè)重大事故隱患判定標(biāo)準(zhǔn)培訓(xùn)PPT
- 從deepfakes深度偽造技術(shù)看AI安全
評(píng)論
0/150
提交評(píng)論