当前位置: 技术问答>linux和unix
LINUX简单的系统调用实现COPY功能
来源: 互联网 发布时间:2016-12-04
本文导语: #include #include //注意Linux也有时间概念 int main(int argc,char *argv[]) { int fd1,fd2; int n; char *buf; char *tmp; //如果注释这个一句复制就是乱码 fd1=open(argv[1],O_RDWR); printf("%dn",fd1); fd2=open(argv[2],O_RDWR); printf("%dn",fd2); n=l...
#include
#include
//注意Linux也有时间概念
int main(int argc,char *argv[])
{
int fd1,fd2;
int n;
char *buf;
char *tmp; //如果注释这个一句复制就是乱码 fd1=open(argv[1],O_RDWR);
printf("%dn",fd1);
fd2=open(argv[2],O_RDWR);
printf("%dn",fd2);
n=lseek(fd1,0,SEEK_END);
printf("%dn",n);
lseek(fd1,0,SEEK_SET);
read(fd1,buf,n);
printf("%sn",buf);
write(fd2,buf,n);
close(fd1);
close(fd2);
return 0;
}
问题就是如果注释掉char *tmp这个一句 程序就出问题。 考虑了下 这个程序应该没用到tmp呢 请教下
#include
//注意Linux也有时间概念
int main(int argc,char *argv[])
{
int fd1,fd2;
int n;
char *buf;
char *tmp; //如果注释这个一句复制就是乱码 fd1=open(argv[1],O_RDWR);
printf("%dn",fd1);
fd2=open(argv[2],O_RDWR);
printf("%dn",fd2);
n=lseek(fd1,0,SEEK_END);
printf("%dn",n);
lseek(fd1,0,SEEK_SET);
read(fd1,buf,n);
printf("%sn",buf);
write(fd2,buf,n);
close(fd1);
close(fd2);
return 0;
}
问题就是如果注释掉char *tmp这个一句 程序就出问题。 考虑了下 这个程序应该没用到tmp呢 请教下
|
你的buf没初始化
buf = (char*)malloc(n); //*************
read(fd1,buf,n);
printf("%sn",buf);
write(fd2,buf,n);
free(buf); //*************
buf = (char*)malloc(n); //*************
read(fd1,buf,n);
printf("%sn",buf);
write(fd2,buf,n);
free(buf); //*************