“如何重定向到沙盒使用”;printf";在iOS中?
在iOS开发中,我想测试日志到本地文件的输出。使用重定向可以将“NSLog”输出到文件,但是如果在使用“如何重定向到沙盒使用”;printf";在iOS中?,ios,printf,stdout,fclose,freopen,Ios,Printf,Stdout,Fclose,Freopen,在iOS开发中,我想测试日志到本地文件的输出。使用重定向可以将“NSLog”输出到文件,但是如果在使用freopen时使用“printf”输出([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],“a+”,stdout)无法执行。有没有办法使“printf”的输出也重定向到日志中?我有很好的答案 您可以使用freopen的dup2实例,只需执行以下操作: //将缓冲区禁止 setvbuf(标准输出,空,0) //用创建的文件描述符替换
freopen时使用“printf”输出([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],“a+”,stdout)代码>无法执行。有没有办法使“printf”的输出也重定向到日志中?我有很好的答案
您可以使用freopen
的dup2
实例,只需执行以下操作:
//将缓冲区禁止
setvbuf(标准输出,空,0)代码>
//用创建的文件描述符替换掉 标准输出和错误输出
//忽略logFilePath(只是一个文件地址)。
int fd=open([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],(O_RDWR | O_CREAT),0644)代码>
dup2(fd,标准文件号)代码>
dup2(fd,标准文件号)
然后在NSLog
和printf
之间将重定向到您的本地服务器