我有一个简单的C代码片段,如下所示:
#include <stdio.h>
void main() {
FILE *f;
char c;
f = popen("ls", "r");
while ((c = fgetc(f)) != EOF) {
//Some tasks
}
rewind(f);
while ((c = fgetc(f)) != EOF) {
printf("%c", c);
}
fclose(f);
}
我不知道为什么代码什么都不输出。似乎rewind()函数不起作用。请帮忙找出我错在哪里。谢谢。
最佳答案
rewind
等同于fseek(stream, 0L, SEEK_SET)
,fseek
仅在文件上合法,而不是流(这是管道的情况)。
检查errno
之后的rewind
应该是
EBADF指定的流不是可查看的流。
关于c - 在popen()中使用rewind(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19523806/