我想重定向NSog()到文件,但仍然在控制台中看到输出.我知道stderr可以使用以下方法重定向到文件:
freopen("file.log", "a+", stderr);
Run Code Online (Sandbox Code Playgroud)
但在将其重定向到文件后,控制台输出中不再显示日志.
我可以构建一个自定义包装器,NSLog()但我不会得到stderr在应用程序崩溃时写入的记录崩溃日志.
我还在尝试dup()复制文件描述符的其他方法,但输出是文件或控制台中的ether,从不在两者中.
这里也提出了类似的问题: 在iPhone上将stderr写入文件和控制台, 但没有接受答案,或建议使用NSLog()包装器.
有没有人知道如何管理这项工作?Thanx提前.
更新:重定向最重要的部分是将系统错误日志(stderr)写入控制台和文件.
这似乎有点像计算系统101的问题,但我很难过.
我正在将C/C++项目A中的现有代码集成到我自己的项目B中.A和B都将链接到一个可执行的线程进程中.项目A的代码广泛使用printf进行输出.这很好,但我也希望将输出捕获到我自己的缓冲区中.一旦printf调用写入,我有没有办法从stdout读取?我不能分叉过程或管道.我对poll()stdout或者dup()的努力没有成功(我可能在这里做错了).