Потеря дескриптора потока в fopen + stream _dup - PullRequest
0 голосов
/ 11 октября 2011

У меня есть следующий пример кода (в Windows):

int fd = _dup(fileno(stdout));
freopen("tmp","w",stdout);

printf("1111");
close(stdout);

char buf[100];

FILE *fp;   
fp = fopen("tmp","r");//in this line fd turns to be 0
if(NULL == fp) return -1;
if(fgets(buf,100 , fp) != NULL );
else return -1
fclose(fp);

Мне нужно значение fd для дальнейшего использования. Как я могу читать из файла без потери значения fd?

1 Ответ

0 голосов
/ 11 октября 2011

Могу поспорить, что либо buf объявлен меньше 100, либо вызов fgets на самом деле с номером больше 100.

...