Как для перенаправления в песочницу использовать "printf" в iOS?
В разработке для iOS я хотел бы проверить вывод журнала в локальный файл. Использовать перенаправление можно для вывода "NSLog" в файл, но если я использую вывод "printf" при использовании freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
не могу сделать. Есть ли способ сделать так, чтобы вывод "printf" также перенаправлялся в журнал?
1 ответ
У меня был хороший ответ.
ты можешь использовать dup2
понять freopen
Просто сделайте так:
// 将 缓冲区 禁止
setvbuf(stdout,NULL,_IONBF,0);
// 用 创建 的 文件描述符 替换 掉 标准 输出 和 错误 输出
//ignore logFilePath(just a file address).
int fd = open([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],(O_RDWR | O_CREAT), 0644);
dup2(fd,STDOUT_FILENO);
dup2(fd, STDERR_FILENO)
затем между NSLog
а также printf
будет перенаправлен на ваш местный.