<em id="0a85b"><option id="0a85b"></option></em>

<abbr id="0a85b"></abbr>

      <nobr id="0a85b"></nobr>
        <tr id="0a85b"></tr>
        9久久伊人精品综合,亚洲一区精品视频在线,成 人免费va视频,国产一区二区三区黄网,99国产精品永久免费视频,亚洲毛片多多影院,精品久久久无码人妻中文字幕,无码国产欧美一区二区三区不卡
        學(xué)習(xí)啦>學(xué)習(xí)電腦>操作系統(tǒng)>Linux教程>

        linux cp命令簡單的實現(xiàn)

        時間: 志藝942 分享

          cp指令用于復(fù)制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經(jīng)存在的目錄,則它會把前面指定的所有文件或目錄復(fù)制到此目錄中。那么你知道linux cp命令簡單的實現(xiàn)么?接下來是小編為大家收集的linux cp命令簡單的實現(xiàn),歡迎大家閱讀:

          linux cp命令簡單的實現(xiàn)

          實現(xiàn)功能:

          $./cp ~/filename ~/OtherName //文件到文件的拷貝

          $./cp ~/directory/filename . //文件到當(dāng)前目錄的拷貝

          $./cp ~/directory/filename ~/directory/ //文件到目錄的拷貝

          不白費口舌,直接上代碼才是王道!

          001

          #include

          002

          #include

          003

          #include

          004

          #include

          005

          #include

          006

          #include

          007

          #include

          008

          #include

          009

          010

          #define BUF_SIZE 1024

          011

          #define PATH_LEN 128

          012

          013

          void my_err(char *err_string, int line )

          014

          {

          015

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

          016

          perror(err_string);

          017

          exit(1);

          018

          }

          019

          020

          void copy_data(const int frd,const int fwd)

          021

          {

          022

          int read_len = 0, write_len = 0;

          023

          unsigned char buf[BUF_SIZE], *p_buf;

          024

          025

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

          026

          027

          if (-1 == read_len) {

          028

          my_err("Read error", __LINE__);

          029

          }

          030

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

          031

          p_buf = buf;

          032

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

          033

          if(write_len == read_len) {

          034

          break;

          035

          }

          036

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

          037

          p_buf += write_len;

          038

          read_len -= write_len;

          039

          }

          040

          else if(-1 == write_len) {

          041

          my_err("Write error", __LINE__);

          042

          }

          043

          }

          044

          if (-1 == write_len) break;

          045

          }

          046

          }

          047

          }

          048

          049

          int main(int argc, char **argv)

          050

          {

          051

          052

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

          053

          int len = 0;

          054

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

          055

          struct stat src_st,des_st;

          056

          057

          if (argc < 3) {

          058

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

          059

          my_err("arguments error ", __LINE__);

          060

          }

          061

          062

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

          063

          if (frd == -1) {

          064

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

          065

          }

          066

          067

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

          068

          my_err("stat error",__LINE__);

          069

          }

          070

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

          071

          if (S_ISDIR(src_st.st_mode)) {

          072

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

          073

          }

          074

          075

          pDes = argv[2];

          076

          stat(argv[2],&des_st);

          077

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

          078

          079

          len = strlen(argv[1]);

          080

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

          081

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

          082

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

          083

          pSrc--;

          084

          }

          085

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

          086

          087

          len = strlen(argv[2]);

          088

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

          089

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

          090

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

          091

          pDes = pSrc;

          092

          }

          093

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

          094

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

          095

          if (NULL == pDes) {

          096

          my_err("malloc error ", __LINE__);

          097

          }

          098

          099

          strcpy(pDes,argv[2]);

          100

          101

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

          102

          strcat(pDes,"/");

          103

          }

          104

          strcat(pDes+len,pSrc);

          105

          }

          106

          }

          107

          108

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

          109

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

          110

          if (fwd == -1) {

          111

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

          112

          }

          113

          copy_data(frd,fwd);

          114

          //puts("end of copy");

          115

          if (len > 0 && pDes != NULL)

          116

          free(pDes);

          117

          118

          close(frd);

          119

          close(fwd);

          120

          121

          return 0;

          122

          }

          
        看了“linux cp命令簡單的實現(xiàn)”還想看:、

        1.Linux 的cp命令及示例

        2.linux cp命令使用介紹

        3.Linux下如何使用cp命令

        4.Linux中cp和scp命令怎么使用

        linux cp命令簡單的實現(xiàn)

        cp指令用于復(fù)制文件或目錄,如同時指定兩個以上的文件或目錄,且最后的目的地是一個已經(jīng)存在的目錄,則它會把前面指定的所有文件或目錄復(fù)制到此目錄中。那么你知道linux cp命令簡單的實現(xiàn)么?接下來是小編為大家收集的linux cp命令簡單的
        推薦度:
        點擊下載文檔文檔為doc格式
        2919378 主站蜘蛛池模板: 亚洲熟妇av综合一区二区| 国产在线观看一区精品| 久久三级国内外久久三级| 91区国产福利在线观看午夜| 亚洲精品一区久久久久一品av| 亚洲天堂精品一区二区| 国产一区二区三区色区| 熟女系列丰满熟妇AV| 99精品国产综合久久久久五月天| 国产精品毛片一区二区三| 亚洲熟妇色xxxxx亚洲| 元码人妻精品一区二区三区9| 国产99青青成人A在线| 精品无码国产污污污免费| 性色欲情网站iwww九文堂| 国产精品亲子乱子伦XXXX裸| 国产农村老熟女国产老熟女| 国产精品福利自产拍久久| 国产婷婷精品av在线| 少妇人妻偷人精品视蜜桃| 亚洲国产精品自在在线观看| 日韩中文字幕有码av| AV成人午夜无码一区二区| 国产91久久精品一区二区| 内射干少妇亚洲69xxx| 一二三四中文字幕日韩乱码| 亚洲免费人成网站在线观看| 国产美女久久久亚洲综合| 日韩欧美亚洲综合久久| 国产精品偷窥熟女精品视频 | 在线人成免费视频69国产| 露脸国产精品自产在线播| 中文字幕少妇人妻精品| 国产在线视欧美亚综合| 国产午夜影视大全免费观看| 久久精品道一区二区三区| 欧洲熟妇色自偷自拍另类| 国产人澡人澡澡澡人碰视频| 日韩无人区码卡1卡2卡| 日韩AV高清在线看片| 亚洲 小说区 图片区 都市|