Почему нельзя распечатать значение errno?

Я смотрю на следующий код в сообщении 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. Любые указатели или помощь будут оценены. Мне просто любопытно об этом; ничего не сломано.

Спасибо.

16
задан Levon 15 July 2012 в 21:31
поделиться