ネットワーク経由で送信できるように、出力をリダイレクトしようとしています。何らかの理由で、デバッガーが接続されている間にコードを実行すると、完全に機能します。通常の方法でアプリケーションを起動すると、読み取り関数でコードがフリーズし、戻りません。誰かが何か指針を持っていれば、私はそれを高く評価します。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^(void) {
static int pipePair[2];
if ( pipe(pipePair) != 0) {
return;
}
dup2(pipePair[1],STDOUT_FILENO);
while (true) {
char * buffer = calloc(sizeof(char), 1024);
ssize_t readCount = read(pipePair[0],buffer,1023);
if (readCount > 0) {
buffer[readCount] = 0;
NSString * log = [NSString stringWithCString:buffer encoding:NSUTF8StringEncoding];
//sent it over network
}
if (readCount == -1) {
return;
}
}
});