0

我有一个简单的 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() 函数不起作用。请帮助找出我错在哪里。谢谢。

4

1 回答 1

8

rewind等效于fseek(stream, 0L, SEEK_SET)并且fseek仅对文件合法,而不是流(管道就是这种情况)。

检查它应该是errno之后rewind

EBADF 指定的流不是可查找的流。

于 2013-10-22T16:51:54.207 回答