我正在处理一项只允许使用低级 I/O(read()、write()、lseek())以及 perror() 的任务。
我已经能够以正确的权限打开 nessisary in 和 out 文件,但是当我输出时,我得到了 in 文件内容的无限循环。请参阅下面的片段...
void *buf = malloc(1024);
while((n = read(in, buf, 1024)) > 0){
if(lseek(in, n, SEEK_CUR) == -1){
perror("in file not seekable");
exit(-1);
}
while((m = write(out, buf, n)) > 0){
if(lseek(out, m, SEEK_CUR) == -1){
perror("out file not seekable");
exit(-1);
}
}
if(m == -1){ perror("error writing out"); exit(-1); }
}
if(n == -1){ perror("error reading in"); exit(-1); }
我已经从我的代码中删除了一些错误捕获,您可以假设变量已初始化并且包含语句在那里。