Какая ОС? В Linux обычная уловка для этого - проверить, подключен ли stderr к tty:
if (isatty(2))
и, если это так, откройте новый дескриптор файла чтения для этого терминала:
new_stdin = open("/proc/self/fd/2", O_RDONLY);
затем дублируйте новый дескриптор файла на стандартный ввод (который закрывает старый стандартный вывод):
dup2(new_stdin, 0);
(Если stderr также был перенаправлен, то isatty(2)
вернет false и вам придется отказаться.)