使用系統(tǒng)調(diào)用方式實現(xiàn)文件拷貝

1.1實驗目的

n掌握Linux系統(tǒng)調(diào)用對文件操作

n掌握linux系統(tǒng)調(diào)用的常用函數(shù)文件訪問用法

1.2實驗內(nèi)容

n使用系統(tǒng)調(diào)用方式實現(xiàn)文件拷貝功能

1.3步驟及現(xiàn)象

n編寫程序掌眠,從待拷貝的文件中逐步讀出數(shù)據(jù)到緩沖區(qū)卡啰,再把緩沖區(qū)的數(shù)據(jù)逐個寫入到新創(chuàng)建的文件中碌上,完成對原文件的拷貝工作

n對應代碼流程圖。

n進入實驗代碼目錄lab9窖式,根據(jù)下圖參考代碼編寫filecp.c程序

$vim filecp.c

1、編寫好后如下圖所示:

2想括、用gcc編譯filecp.c文件忠寻,輸入命令:$gcc filecp.c –o filecp

生成可執(zhí)行文件filecp

3、運行應用程序百揭,如下圖所示爽哎,將filecp.c文件復制為test.c,然后用diff命令比

較兩個文件的內(nèi)容是否一樣器一,一樣則說明拷貝正確课锌。

1.4關(guān)鍵代碼分析

//功能描述:該程序采用系統(tǒng)調(diào)用方式通過從待拷貝的文件中逐步讀出數(shù)據(jù)到緩沖區(qū),再把緩沖區(qū)的數(shù)據(jù)逐個寫入到新創(chuàng)建的文件中祈秕,完成對原文件的拷貝

#include

#include

#include

#include

#include

#include

#include

#define BUFFER_SIZE 1024

intmain(intargc,char**argv)

{

intfrom_fd,to_fd;//保存文件描述符

longfile_len=0;//保存文件的總大小

intret=1;

charbuffer[BUFFER_SIZE];//定義緩存區(qū)

//判斷入口參數(shù)

if(argc!=3)

{

printf("Usage:%sfromfile

tofile\n",argv[0]);

exit(1);

}

//打開源文件

if((from_fd=open(argv[1],O_RDONLY|O_CREAT))==-1)

{

printf("Open %s

Error\n",argv[1]);

exit(1);

}

//創(chuàng)建目的文件

if((to_fd=open(argv[2],O_WRONLY|O_CREAT))==-1)

{

printf("Open %s Error\n",argv[2]);

exit(1);

}

//獲取文件大小

file_len=lseek(from_fd,0L,SEEK_END);

lseek(from_fd,0L,SEEK_SET);

printf("form file

size is %d\n",file_len);

//文件拷貝

while(ret)

{

ret=read(from_fd,buffer,BUFFER_SIZE);

if(ret==-1)

{

printf("read

Error\n");

exit(1);

}

write(to_fd,buffer,ret);//寫入文件

file_len-=ret;

bzero(buffer,BUFFER_SIZE);//清空緩存區(qū)

}

printf("there are

%d byte(s)data left without copy\n",file_len);

close(from_fd);

close(to_fd);

exit(0);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末渺贤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子请毛,更是在濱河造成了極大的恐慌志鞍,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,686評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件方仿,死亡現(xiàn)場離奇詭異固棚,居然都是意外死亡街州,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,668評論 3 385
  • 文/潘曉璐 我一進店門玻孟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人鳍征,你說我怎么就攤上這事黍翎。” “怎么了艳丛?”我有些...
    開封第一講書人閱讀 158,160評論 0 348
  • 文/不壞的土叔 我叫張陵匣掸,是天一觀的道長。 經(jīng)常有香客問我氮双,道長碰酝,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,736評論 1 284
  • 正文 為了忘掉前任戴差,我火速辦了婚禮送爸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘暖释。我一直安慰自己袭厂,他們只是感情好,可當我...
    茶點故事閱讀 65,847評論 6 386
  • 文/花漫 我一把揭開白布球匕。 她就那樣靜靜地躺著纹磺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪亮曹。 梳的紋絲不亂的頭發(fā)上橄杨,一...
    開封第一講書人閱讀 50,043評論 1 291
  • 那天,我揣著相機與錄音照卦,去河邊找鬼式矫。 笑死,一個胖子當著我的面吹牛窄瘟,可吹牛的內(nèi)容都是我干的衷佃。 我是一名探鬼主播,決...
    沈念sama閱讀 39,129評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼蹄葱,長吁一口氣:“原來是場噩夢啊……” “哼氏义!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起图云,我...
    開封第一講書人閱讀 37,872評論 0 268
  • 序言:老撾萬榮一對情侶失蹤惯悠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后竣况,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體克婶,經(jīng)...
    沈念sama閱讀 44,318評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,645評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了情萤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鸭蛙。...
    茶點故事閱讀 38,777評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖筋岛,靈堂內(nèi)的尸體忽然破棺而出娶视,到底是詐尸還是另有隱情,我是刑警寧澤睁宰,帶...
    沈念sama閱讀 34,470評論 4 333
  • 正文 年R本政府宣布肪获,位于F島的核電站,受9級特大地震影響柒傻,放射性物質(zhì)發(fā)生泄漏孝赫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,126評論 3 317
  • 文/蒙蒙 一红符、第九天 我趴在偏房一處隱蔽的房頂上張望青柄。 院中可真熱鬧,春花似錦违孝、人聲如沸刹前。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,861評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽喇喉。三九已至,卻和暖如春校坑,著一層夾襖步出監(jiān)牢的瞬間拣技,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,095評論 1 267
  • 我被黑心中介騙來泰國打工耍目, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膏斤,地道東北人。 一個月前我還...
    沈念sama閱讀 46,589評論 2 362
  • 正文 我出身青樓邪驮,卻偏偏與公主長得像莫辨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子毅访,可洞房花燭夜當晚...
    茶點故事閱讀 43,687評論 2 351

推薦閱讀更多精彩內(nèi)容