如何重定向到沙箱在iOS中使用“printf”?
问题描述:
在iOS开发中,我想测试日志的输出到本地文件。使用重定向可以将“NSLog”输出到文件中,但是如果我使用“printf”输出的时候使用freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
就无法做到了。有没有办法让“printf”输出也被重定向到日志?如何重定向到沙箱在iOS中使用“printf”?
答
我已经很好的答案。
可以使用dup2
instand的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
之间会重定向到本地。