亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2100 | 回復(fù): 2
打印 上一主題 下一主題

[C] 帶進(jìn)度條的cp [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2013-03-20 19:03 |只看該作者 |倒序?yàn)g覽
很喜歡C,但水平很差。希望能向高手們學(xué)習(xí)。
用cp命令時(shí),有時(shí)遇到大點(diǎn)的文件,就只有傻等,不知道什么時(shí)候才能cp完畢。于是寫(xiě)了一個(gè)帶有進(jìn)度條的mcp,僅僅有最基本的功能。望高手們指點(diǎn),改進(jìn)。
新手上路,請(qǐng)輕拍。

mcp.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#define ERR_EXIT(m)\
                do\
                {\
                        perror(m);\
                        exit(-1);\
                }while(0)

int p_len(int p_len, int sum_len);

int main(int argc, char* argv[])
{
        int s_file,d_file,s_size,d_size,num;
        struct stat st_buf;
        char buf[512];

        if(argc!=3)
        {
                printf("This is a program for copy file\n");
                printf("please input 2 file name\n");
                printf("example:\tmycp file1 file2\n");
                exit(-1);
        }

        s_file=open(argv[1],O_RDONLY);
        if(s_file==-1)
                ERR_EXIT("Open source file error");
        if(stat(argv[1],&st_buf))
                ERR_EXIT("Get source file stat error");
        s_size=st_buf.st_size;

        d_file=open(argv[2],O_WRONLY|O_CREAT,0644);
        if(d_file==-1)
                ERR_EXIT("Open destination file error");



        d_size=0;
        while((num=read(s_file,buf,512))>0)
        {
                if((write(d_file,buf,512))==-1)
                        ERR_EXIT("Write file error");
                sync();
                if(stat(argv[2],&st_buf))
                        ERR_EXIT("Get destination file error");
                d_size=st_buf.st_size;

                p_len(d_size,s_size);
        }

        printf("\n");
        printf("File copy to complete\n");
        close(s_file);
        close(d_file);

    return 0;
}

int p_len(int p_len, int sum_len)
{
        int i,width,sum_width;

    system("export COLUMNS");
    sum_width=atoi(getenv("COLUMNS"));
//    printf("The terminal width is:%d\n",width);
        width=sum_width-15;       

        printf("\r[");
        for(i=1;i<=abs(p_len*width/sum_len);i++)
                printf(">");
        for(i=1;i<=width-abs(p_len*width/sum_len);i++)
                printf("=");
        printf("]    %.2f%%",(float)p_len*100/sum_len);
        fflush(stdout);

        return 0;
}

論壇徽章:
30
摩羯座
日期:2013-12-23 17:28:38牛市紀(jì)念徽章
日期:2015-07-13 11:35:582022北京冬奧會(huì)紀(jì)念版徽章
日期:2015-08-07 17:10:57青銅圣斗士
日期:2015-11-27 17:45:3815-16賽季CBA聯(lián)賽之天津
日期:2016-02-15 13:44:3615-16賽季CBA聯(lián)賽之江蘇
日期:2018-05-02 16:56:2715-16賽季CBA聯(lián)賽之遼寧
日期:2018-08-08 13:41:1015-16賽季CBA聯(lián)賽之深圳
日期:2018-10-02 18:05:0315-16賽季CBA聯(lián)賽之天津
日期:2019-05-31 15:05:0615-16賽季CBA聯(lián)賽之北京
日期:2022-06-30 13:34:1115-16賽季CBA聯(lián)賽之同曦
日期:2022-07-06 19:33:5415-16賽季CBA聯(lián)賽之吉林
日期:2022-12-28 14:16:22
2 [報(bào)告]
發(fā)表于 2013-03-21 13:57 |只看該作者
不支持目錄copy這個(gè)程序還有什么意義

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2013-03-23 21:04 |只看該作者
不好意思,剛開(kāi)始寫(xiě)。后面是準(zhǔn)備加上目錄copy功能的。
這個(gè)只能算是0.1版本。呵呵……
水平有限,見(jiàn)笑了。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP