c - fopen + Stream _dup 中的流描述符丢失

标签 c winapi stream fopen dup

我有以下代码示例(在 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 值?

最佳答案

我敢打赌,要么 buf 被声明为小于 100,要么 fgets 调用实际上使用的数字大于 100。

关于c - fopen + Stream _dup 中的流描述符丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724631/

相关文章:

c - 我想知道 OCIStmt 结构

c - 如何创建没有 MSVCR90D.dll 的 Win32 DLL?

c++ - DLLNotFoundException异常

c++ - 将比特流捕获到字符串中

c - ‘{’ token 之前的预期表达式

c - 错误 - pthread_mutex_lock() 失败 : Invalid argument

c - 当链表增长超过 100 个元素时,链表头的值会默默地改变

c - 将 HGLOBAL DIB 数据写入文件时遇到问题

java - 我必须关闭多少个包装的 Java I/O 对象?

c++ - C++检测输入是否不满足条件