【发布时间】:2011-10-11 10:33:16
【问题描述】:
我有以下代码示例(在 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 值?
【问题讨论】:
-
指示的行不会影响 fd 的值。您的代码中的其他地方一定有错误。
-
@ Klas Lindbäck - 不。这正是代码。我调试它并看到 fd 值是 3 直到指示行
-
不可能。
fgets(buf,100 , fp) != NULL );甚至无法编译。我在Linux下试了一下,改正语法错误后,程序结束时fd的值为3。 -
Klas Lindbäck - 抱歉,这是一个错字。在问题中写道,问题与窗户有关
-
我看到它在 Windows 中,但这不重要。也许调试器有缺陷?你试过打印 fd 的值吗?