This answer演示了在iOS上,可以通过编写将stderr重定向到logFileUrl
上的文件
freopen(logFileUrl.path.cString(using: .ascii), "a+", stderr)
完成此操作后,以后如何将stderr
句柄恢复为其原始值?换句话说,我希望进一步的标准错误输出能够到达我致电freopen()
之前的位置。
对this question的回答表明,我可以保存stderr
的原始值并对dup2
进行几次调用,但是我认为该函数接受文件描述符,而不是文件句柄像stderr
,但我不确定如何在两者之间安全地转换。