成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

linux仿cp命令 仿真linux

linux中cp命令如何用 C語言實現(xiàn)

1,首先需要了解cp的原理。

創(chuàng)新互聯(lián)建站專注于吉木薩爾企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),成都做商城網(wǎng)站。吉木薩爾網(wǎng)站建設(shè)公司,為吉木薩爾等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站策劃,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

2,可以參考cp的源碼去了解其原理

3,cp命令的源碼可以在linux內(nèi)核中找到。

4,或者下載busybox其中也會有cp的源碼

只有了解其原理之后才能談如何實現(xiàn)。參考代碼如下:

#include?stdio.h

#include?stdlib.h

#include?sys/stat.h

#include?sys/types.h

#include?fcntl.h

#include?errno.h

#include?unistd.h

#include?string.h

#define?BUF_SIZE?1024

#define?PATH_LEN?128

void?my_err(char?*err_string,?int?line?)

{

fprintf(stderr,"line:%d?",line);

perror(err_string);?

exit(1);

}

void?copy_data(const?int?frd,const?int?fwd)

{

int?read_len?=?0,?write_len?=?0;

unsigned?char?buf[BUF_SIZE],?*p_buf;

while?(?(read_len?=?read(frd,buf,BUF_SIZE))?)?{

if?(-1?==?read_len)?{

my_err("Read?error",?__LINE__);

}

else?if?(read_len??0)?{?//把讀取部分寫入目標(biāo)文件

p_buf?=?buf;

while?(?(write_len?=?write(fwd,p_buf,read_len))?)?{

if(write_len?==?read_len)?{

break;

}

else?if?(write_len??0)?{?//只寫入部分

p_buf?+=?write_len;

read_len?-=?write_len;

}

else?if(-1?==?write_len)?{

my_err("Write?error",?__LINE__);

}

}

if?(-1?==?write_len)?break;

}

}

}

int?main(int?argc,?char?**argv)?

{

int?frd,?fwd;?//讀寫文件描述符

int?len?=?0;

char?*pSrc,?*pDes;?//分別指向源文件路徑和目標(biāo)文件路徑

struct?stat?src_st,des_st;

if?(argc??3)?{

printf("用法?./MyCp?源文件路徑?目標(biāo)文件路徑\n");

my_err("arguments?error?",?__LINE__);

}

frd?=?open(argv[1],O_RDONLY);

if?(frd?==?-1)?{

my_err("Can?not?opne?file",?__LINE__);

}

if?(fstat(frd,src_st)?==?-1)?{

my_err("stat?error",__LINE__);

}

/*檢查源文件路徑是否是目錄*/

if?(S_ISDIR(src_st.st_mode))?{

my_err("略過目錄",__LINE__);

}

pDes?=?argv[2];

stat(argv[2],des_st);

if?(S_ISDIR(des_st.st_mode))?{?//目標(biāo)路徑是目錄,則使用源文件的文件名

len?=?strlen(argv[1]);

pSrc?=?argv[1]?+?(len-1);?//指向最后一個字符

/*先找出源文件的文件名*/

while?(pSrc?=?argv[1]??*pSrc?!=?'/')?{

pSrc--;

}

pSrc++;//指向源文件名

len?=?strlen(argv[2]);?

//?.?表示復(fù)制到當(dāng)前工作目錄

if?(1?==?len??'.'?==?*(argv[2]))?{

len?=?0;?//沒有申請空間,后面就不用釋放

pDes?=?pSrc;

}

else?{?//復(fù)制到某目錄下,使用源文件名

pDes?=?(char?*)malloc(sizeof(char)*PATH_LEN);

if?(NULL?==?pDes)?{

my_err("malloc?error?",?__LINE__);

}

strcpy(pDes,argv[2]);

if?(?*(pDes+(len-1))?!=?'/'?)?{?//目錄缺少最后的'/',則補上’/‘

strcat(pDes,"/");

}

strcat(pDes+len,pSrc);

}

}

/*?打開目標(biāo)文件,?使權(quán)限與源文件相同*/?

fwd?=?open(pDes,O_WRONLY?|?O_CREAT?|?O_TRUNC,src_st.st_mode);

if?(fwd?==?-1)?{

my_err("Can?not?creat?file",?__LINE__);

}

copy_data(frd,fwd);

//puts("end?of?copy");

if?(len??0??pDes?!=?NULL)

free(pDes);

close(frd);

close(fwd);

return?0;

}

linux復(fù)制命令

linux復(fù)制命令cp。

cp命令主要用來復(fù)制文件和目錄,語法“cp [選項] 源文件 目標(biāo)文件”,可以將一個或多個源文件或目錄復(fù)制到指定文件或目錄下;同時借助某些選項,還可以實現(xiàn)復(fù)制整個目錄,以及比對兩文件的新舊而予以升級等功能。

含義

一般的Linux使用者均為普通用戶,而系統(tǒng)管理員一般使用超級用戶帳號完成一些系統(tǒng)管理的工作。如果只需要完成一些由普通帳號就能完成的任務(wù),建議不要使用超級用戶帳號,以免無意中破壞系統(tǒng)。影響系統(tǒng)的正常運行。

用戶登錄分兩步:第一步,輸入用戶的登錄名,系統(tǒng)根據(jù)該登錄名識別用戶;第二步,輸入用戶的口令,該口令是用戶自己設(shè)置的一個字符串,對其他用戶是保密的,是在登錄時系統(tǒng)用來辨別真假用戶的關(guān)鍵字。

linux下寫個了簡單模仿cp命令的程序,問題大大 求救 我實在不知道哪兒出問題了 求大神賜教

cp命令

該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的copy命令一樣,功能十分強大。

語法: cp [選項] 源文件或目錄 目標(biāo)文件或目錄

說明:該命令把指定的源文件復(fù)制到目標(biāo)文件或把多個源文件復(fù)制到目標(biāo)目錄中。

該命令的各選項含義如下:

- a 該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用等于dpR選項的組合。

- d 拷貝時保留鏈接。

- f 刪除已經(jīng)存在的目標(biāo)文件而不提示。

- i 和f選項相反,在覆蓋目標(biāo)文件之前將給出提示要求用戶確認?;卮饄時目標(biāo)文件將被覆蓋,是交互式拷貝。

- p 此時cp除復(fù)制源文件的內(nèi)容外,還將把其修改時間和訪問權(quán)限也復(fù)制到新文件中。

- r 若給出的源文件是一目錄文件,此時cp將遞歸復(fù)制該目錄下所有的子目錄和文件。此時目標(biāo)文件必須為一個目錄名。

- l 不作拷貝,只是鏈接文件。

需要說明的是,為防止用戶在不經(jīng)意的情況下用cp命令破壞另一個文件,如用戶指定的目標(biāo)文件名已存在,用cp命令拷貝文件后,這個文件就會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用i選項。

例子:

Cp -i file1 file2 (將文檔 file1 復(fù)制成 file2 . –i為提示確認。)

cp file1 dir1 將文檔 file1 復(fù)制到目錄 dir1 下,文件名仍為 file1.

cp /tmp/file1 . 將目錄 /tmp 下的文檔 file1復(fù)制到現(xiàn)行目錄下,檔名仍為 file1.

cp /tmp/file1 file2 將目錄 /tmp 下的文檔 file1現(xiàn)行目錄下,檔名為file2

cp -r dir1 dir2 (recursive copy) 復(fù)制整個目錄.若目錄 dir2 不存在,則將目錄dir1,及其所有文檔和子目錄,復(fù)制到目錄 dir2 下,新目錄名稱為dir1.若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,復(fù)制為目錄 dir2.

linux編輯文件命令

linux編輯文件命令有如下:

1、cp命令,作用復(fù)制,參數(shù)如下:

-a:將文件的特性一起復(fù)制。

-p:連同文件的屬性一起復(fù)制,而非使用默認方式,與-a相似,常用于備份。

-i:若目標(biāo)文件已經(jīng)存在時,在覆蓋時會先詢問操作的進行。

-r:遞歸持續(xù)復(fù)制,用于目錄的復(fù)制行為。

-u:目標(biāo)文件與源文件有差異時才會復(fù)制。

2、rm命令作用為刪除,參數(shù):

-f:就是force的意思,忽略不存在的文件,不會出現(xiàn)警告消息。

-i:互動模式,在刪除前會詢問用戶是否操作。

-r:遞歸刪除,最常用于目錄刪除,它是一個非常危險的參數(shù)。

3、mv命令作用為移動文件:

-f:force強制的意思,如果目標(biāo)文件已經(jīng)存在,不會詢問而直接覆蓋。

-i:若目標(biāo)文件已經(jīng)存在,就會詢問是否覆蓋。

-u:若目標(biāo)文件已經(jīng)存在,且比目標(biāo)文件新,才會更新。

4、pwd命令,作用為查看”當(dāng)前工作目錄“的完整路徑。

pwd-P#顯示出實際路徑,而非使用連接(link)路徑;pwd顯示的是連接路徑。

5、rmdir命令刪除目錄:

rmdir [選項]... 目錄...

-p:遞歸刪除目錄dirname,當(dāng)子目錄刪除后其父目錄為空時,也一同被刪除。如果整個路徑被刪除或者由于某種原因保留部分路徑,則系統(tǒng)在標(biāo)準(zhǔn)輸出上顯示相應(yīng)的信息。

-v:verbose顯示指令執(zhí)行過程。

網(wǎng)頁名稱:linux仿cp命令 仿真linux
文章鏈接:http://jinyejixie.com/article18/dosgsgp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、ChatGPT靜態(tài)網(wǎng)站、搜索引擎優(yōu)化、商城網(wǎng)站、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
浠水县| 新宾| 宝山区| 抚松县| 滦平县| 会泽县| 二连浩特市| 台中市| 桓台县| 石阡县| 陇西县| 定兴县| 沂水县| 武陟县| 中方县| 泌阳县| 石首市| 屏南县| 河东区| 伊吾县| 江北区| 钟山县| 长葛市| 通化县| 馆陶县| 黄梅县| 张家港市| 临沂市| 鄯善县| 安徽省| 富平县| 克东县| 修水县| 吉隆县| 阳原县| 友谊县| 宁海县| 明水县| 奉新县| 龙江县| 屯留县|