关于使用循环读写文件问题,不懂,求大神解答。。。
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
int rfd, wfd;
char c;
int main(int argc, char*argv[])
{
if(argc!=3)
{
printf("Usage %s sourcesfiel destfile. \n",argv[0]);
return 1;
}
if((rfd=open(argv[1], O_RDONLY))==-1)
{
printf("openf file %s failed.\n",argv[1]);
return 2;
}
if((wfd=creat(argv[2],0666))==-1)
{
printf("create file %s failed.\n",argv[2]);
return 3;
}
fork();
for(;;)
{
if(read(rfd,&c,1)!=1)
return 1;
write(wfd,&c,1);
}
return 0;
}
问题:
标注为红色的代码中:
if(read(rfd,&c,1)!=1)
return 1;
write(wfd,&c,1);
一旦 if(read(rfd,&c,1)!=1) return 1; 那么就不可能去写:write(wfd,&c,1);(因为前面都已经return 1了)。这样还能循环从前一个文件读取字符,然后写入到下一个文件里面吗? 这个代码是不是有问题?
[解决办法]
代码是应该有问题的!
而且中间的fork函数你没有处理父子进程呢!
[解决办法]