我需要将 file1 上下文复制到 file2。这是我的文件 file1
My name is John
文件2
I like water
所以我的resilt应该是file2
I like water
My name is John
我必须使用mmap
andmemcpy
为此。所以在这里我做什么首先我打开两个文件
int da_open(const char *name){
int dskr;
dskr = open( name, O_RDWR );
if( dskr == -1 ){
perror( name );
exit(1);
}
printf( "dskr1 = %d\n", dskr );
return dskr;
}
然后我映射我的文件
void *da_mmap1( int d, int size ){
void *a = NULL;
a = mmap( NULL, size, PROT_WRITE | PROT_READ, MAP_SHARED, d, 0 );
if( a == MAP_FAILED ){
perror( "mmap failed" );
abort();
}
return a;
}
这是我的 memcpy
void *da_memcpy(void *str1, const void *str2, size_t n){
return memcpy(str1, str2, n);
}
和我的主要
int main(int argc, char *argv[] ){
struct stat fileStat;
int st;
int d1;
int d2;
void *r = NULL;
void *w = NULL;
if(argc == 3){
d1 = da_open(argv[1]);
d2 = da_open(argv[2]);
r = da_mmap1(d1, SIZE);
w = da_mmap1(d2, SIZE);
st = stat(r, &fileStat);
printf("Tik skaitoma: %d\n", fileStat.st_size);
da_memcpy(w,r,fileStat.st_size);
da_munamp(r, SIZE);
da_munamp(w, SIZE);
da_close(d1);
da_close(d2);
}
return 0;
}
但在此之后,我的 file2 看起来像这样
My name i
为什么?怎么了?