真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux仿cp命令 仿真linux

linux中cp命令如何用 C語言實(shí)現(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è)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)

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

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

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

只有了解其原理之后才能談如何實(shí)現(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);?//指向最后一個(gè)字符

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

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))?!=?'/'?)?{?//目錄缺少最后的'/',則補(bǔ)上’/‘

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 [選項(xiàng)] 源文件 目標(biāo)文件”,可以將一個(gè)或多個(gè)源文件或目錄復(fù)制到指定文件或目錄下;同時(shí)借助某些選項(xiàng),還可以實(shí)現(xiàn)復(fù)制整個(gè)目錄,以及比對兩文件的新舊而予以升級等功能。

含義

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

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

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

cp命令

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

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

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

該命令的各選項(xiàng)含義如下:

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

- d 拷貝時(shí)保留鏈接。

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

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

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

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

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

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

例子:

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

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ù)制整個(gè)目錄.若目錄 dir2 不存在,則將目錄dir1,及其所有文檔和子目錄,復(fù)制到目錄 dir2 下,新目錄名稱為dir1.若目錄dir2不存在,則將dir1,及其所有文檔和子目錄,復(fù)制為目錄 dir2.

linux編輯文件命令

linux編輯文件命令有如下:

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

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

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

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

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

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

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

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

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

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

3、mv命令作用為移動(dòng)文件:

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

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

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

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

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

5、rmdir命令刪除目錄:

rmdir [選項(xiàng)]... 目錄...

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

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


當(dāng)前題目:linux仿cp命令 仿真linux
文章鏈接:http://weahome.cn/article/dosgsgp.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部