2017-06-06 4 views
0

Dans le développement iOS, je voudrais tester la sortie du journal dans le fichier local. Utilisez la redirection peut être fait pour "NSLog" sortie vers le fichier, mais si j'utilise la sortie "printf" lorsque l'utilisation freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding], "a+", stdout); ne peut pas faire. Est-il possible de rendre la sortie "printf" également redirigée vers le journal?Comment rediriger vers le bac à sable utiliser "printf" dans iOS?

Répondre

0

j'avais bien la réponse.

vous pouvez utiliser dup2 Instand de freopen, il suffit de faire comme ceci:

// 将 缓冲区 禁止

setvbuf(stdout,NULL,_IONBF,0);

// 用 创建 的 文件描述符Ajouter à la liste de souhaits

//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)

puis entre NSLog et printf seront redirigés vers votre région.