【发布时间】:2012-03-19 00:35:51
【问题描述】:
我正在处理一项只允许使用低级 I/O(read()、write()、lseek())以及 perror() 的作业。
我已经能够以正确的权限打开 nessisary in 和 out 文件,但是当我输出时,我得到了 in 文件内容的无限循环。见下面的 sn-p...
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); }
我已经从我的代码中删除了一些错误捕获,您可以假设变量已初始化并且包含语句在那里。
【问题讨论】:
-
到目前为止你做了哪些调试?例如,它卡在哪个循环中,外循环还是内循环?
-
我认为你正在做的是重复写同一行。尝试将
write周围的while更改为if -
卡在内部循环中。除此之外,我不能告诉你更多。
-
谢谢大家!代码正在运行。
标签: c io low-level-io