【发布时间】:2012-07-14 19:03:00
【问题描述】:
我正在查看 SO“低质量”帖子中的以下代码以确保示例有效,我的问题是为什么我不能打印 errno 的值?
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(){
FILE *fp;
errno = 0;
fp=fopen("Not_exist.txt","r");
if(fp == NULL && errno == ENOENT)
perror("file not exist");
return 0;
}
当我尝试打印该值时会发生以下情况:
(gdb) p errno
Cannot find thread-local variables on this target
(gdb)
我可以很好地打印 fp 的值。如您所料,它的值为0x00。
我查看了/usr/include/errno.h 和许多其他包含在errno.h 中的包含文件,但我无法弄清楚errno 是如何定义的。任何指示或帮助将不胜感激。我只是对此感到好奇;什么都没有。
谢谢。
【问题讨论】:
-
下次尝试使用
ferror(my-file-pointer)。 -
你能从你的程序中打印出
errno的值吗?printf("errno = %d\n", errno); -
在检查核心转储时是否也可以打印
errno?那时你不能运行任何功能。