好久没写东西了 开始整理自己写的一些东西 东西不多 写得也很菜 学校风气不怎么样
真正学习的没几个 最近老在玩游戏 控制不住自己 四级还没过 觉得压力很大 不是自己
不想学 只是环境不怎么好 宿舍都在看电影打游戏 学不下 没项目 没实力 没学习路线
嵌入式真的很难 以前觉得应该没那么难 现在觉得好傻
不多说 贴个 上个学期的实训的东西 虽然很多不懂 但只为记录一下
老师是个漂亮的刚出去工作的学姐
#include <stdio.h>
#include <unistd.h> //close
#include <fcntl.h> //open
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <stdlib.h>
//#include <conio.h>
#define LEN 1024*512
#define len 1024
#ifndef __USE_FILE_OFFSET64
#define __USE_FILE_OFFSET64
//
#endif
//
#define __USE_LARGEFILE64
#ifndef __USE_LARGEFILE64
#endif
#ifndef __USE_LARGEFILE64_SOURCE
#define __USE_LARGEFILE64_SOURCE
#endif
int main(int argc, char *agve[]) {
char *dest, *src;/* 目标文件名 源文件名 */
size_t dest_fd, src_fd;
char *mp;
struct stat st;
int pro;
size_t size;
int ret, len1 = 0;
int mmap_len = 0, cur_size = 0;
int sum;
if (argc != 3) {
perror("error: ./cp.c src dest");
return -1;
}
src = agve[1];
dest = agve[2];
/* 以只读方式打开源文件 */
src_fd = open64(src, O_RDONLY);
if (src_fd < 0) {
perror("src open64() error");
return -1;
}
if (-1 == fstat64(src_fd, &st)) {
perror("fstat() error");
return -1;
}
size = st.st_size;
/* 以只写方式打开目标文件,若此文件不存在则创建, 访问权限值为644 */
dest_fd = open64(dest, O_RDWR | O_CREAT, 00664);
if (dest_fd < 0) {
perror("dest open64() error");
return -1;
}
printf("filesize = %d\n", size);
int cur_mmap = 0;
int j, i = 0;
while (1) {
if (size - cur_mmap < LEN)
mmap_len = size - cur_mmap;
else
mmap_len = LEN;
mp = (char *) mmap(NULL, mmap_len, PROT_READ, MAP_SHARED, src_fd,
cur_mmap);
// if(mp == NULL)
if (mp == MAP_FAILED) //if(mp == (void *) -1)
{
perror("mmap error\n");
return -1;
}
cur_size = 0;
while (1) {
if (mmap_len - cur_size < len)
len1 = mmap_len - cur_size;
else
len1 = len;
ret = write(dest_fd, mp + cur_size, len1);
sum = cur_mmap + cur_size + ret;
pro = (float) (sum) / size * 100;
for (; i <= 50; i++) {
if (i == 49)
printf("=\r");
else
printf("=");
}
for (j = 0; j < pro; j += 2) {
printf(">");
}
printf("%d%%\r", pro);
cur_size += len1;
if (cur_size == mmap_len)
break;
}
munmap(mp, mmap_len);
cur_mmap += mmap_len;
if (cur_mmap == size)
break;
}
close(dest_fd);
close(src_fd);
printf("\n");
return 0;
}