Как для перенаправления в песочницу использовать "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 будет перенаправлен на ваш местный.

Другие вопросы по тегам