我有一个简单的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/

10-10 17:48