11系统hook,想把日志写入文件,一直不成功。


#1

提前用命令 chown mobile:mobile 把目录修改了权限,也是不成功,10系统没有问题,头大了。
哪老位老师遇到相同情况如何解决??多谢了。

静态函数如下:
static void writeToFileWithString11( NSString* inStr )
{
NSString* fileName = @"/tmp/88888.log";
NSFileManager* fileManager = [NSFileManager defaultManager]; // [[NSFileManager alloc] init] ;// [NSFileManager defaultManager];
if ( [fileManager fileExistsAtPath:fileName]) {
NSData* data = [NSData dataWithContentsOfFile:fileName];
NSString* str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
inStr = [NSString stringWithFormat:@"%@\r\n%@",str,inStr];
}
[fileManager createFileAtPath:fileName contents:[ inStr dataUsingEncoding:NSUTF8StringEncoding] attributes:nil];
}


#2

遇到同样的问题了,顶起来,等大神。


#3

应该是被沙箱阻止了

老老实实 NSString *fileName = [NSTemporaryDirectory() stringByAppendingPathComponent:@"88888.log"];


#4

楼上正解,写到沙箱就okay了


#6

chown mobile:mobile /tmp/
chmod 755 /tmp/

void redirectLogToFile()
{
    NSString * filePath = @"/tmp/test.log";

    NSFileManager * fileManager = [NSFileManager defaultManager];

    BOOL isDir = NO;
    BOOL exsit = [fileManager fileExistsAtPath:filePath isDirectory:&isDir];
    if(exsit&&isDir)
    {
        NSLog(@"-----error-----");
        return;
    }
    if(!exsit) //如果不存在
    {
        NSString *str = @"Log\n";
        [str writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
// 将log输入到文件
    freopen([filePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout);
    freopen([filePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stderr);
}

手机端 tail -f /tmp/test.log

就这样