Если есть указатель на FILE, то дескриптор можно получить функцией
fileno(). Впрочем у stdin, stdout, stderr они заранее известны: 0,
1, 2.
Если покопать в исходниках их библиотеки можно найти
/* the array of stream pointers */
FILE *_Files[FOPEN_MAX] = {&__iar_Stdin, &__iar_Stdout, &__iar_Stderr};
FOPEN_MAX если не переопределён равен 8.
Взирая на нынешнее состояние отечества моего с таковым оком, каковое может иметь человек, воспитанный по строгим древним правилам, ... не могу я не дивиться, в сколь краткое время повредились повсюдно нравы в России. (с) кн. М.М. Щербатов.