Ответ 1
cerr
- это поток С++, а stderr
- это дескриптор файла C, представляющий стандартный вывод ошибки.
Вы пишете их так же, как вы пишете в другие потоки и дескрипторы файлов:
cerr << "Urk!\n";
fprintf (stderr, "Urk!\n");
Я не уверен, что вы подразумеваете под "восстановлением" в этом контексте, выход идет на стандартную ошибку и что он. После этого программа не хотела заботиться об этом. Если вы имеете в виду, как сохранить его позже, вне программы, см. Следующий параграф.
По умолчанию они перейдут на ваш терминал, но вывод может быть перенаправлен в другом месте с чем-то вроде:
run_my_prog 2>error.out
И да, выход "screen" - это поток (или дескриптор файла), но, как правило, только потому, что по умолчанию "t24 > и stderr/cerr
подключены к вашему" экрану ". Перенаправление будет влиять на это, как в следующем случае, когда на экран ничего не будет записано:
run_my_prog >/dev/null 2>&1
(сложная вещь, например, запись непосредственно на /dev/tty
). Этот фрагмент будет перенаправлять как стандартный вывод, так и стандартную ошибку, чтобы перейти к ведро бит.