После вызова fclose () любое использование
поток приводит к неопределенному поведению.
Так что, если это стандартный файл FILE *, вы больше не можете использовать stdout
, даже чтобы проверить, действительно ли он / открыт.
Вы можете использовать дескриптор файла для stdout напрямую, это fd 1.
struct stat stbuf;
if(fstat(1,&stbuf) == -1) {
if(errno == EBADF) {
stdout isn't open/valid
}
}