Восстановление stderr к его первоначальному значению после вызова freopen () - PullRequest
0 голосов
/ 20 июня 2019

Этот ответ демонстрирует, что на iOS можно перенаправить stderr в файл на logFileUrl, написав

freopen(logFileUrl.path.cString(using: .ascii), "a+", stderr)

После того, как я это сделал, как я могу позжевосстановить дескриптор stderr к его первоначальному значению?Другими словами, я хочу, чтобы дальнейший вывод стандартной ошибки шел в то же место, в котором он находился до того, как я позвонил freopen().

Ответы на на этот вопрос предполагают, что я могу сохранитьисходное значение stderr и сделать пару вызовов dup2, но я считаю, что функция принимает файловые дескрипторы, а не файловые дескрипторы, такие как stderr, и я не уверен, как безопасно конвертировать между ними.

...