1

ネットワーク経由で送信できるように、出力をリダイレクトしようとしています。何らかの理由で、デバッガーが接続されている間にコードを実行すると、完全に機能します。通常の方法でアプリケーションを起動すると、読み取り関数でコードがフリーズし、戻りません。誰かが何か指針を持っていれば、私はそれを高く評価します。

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;
                }
            }
        });
4

1 に答える 1

3

どうやらiOS5.1ではstdoutへの書き込みは許可されていませんでした。http://spouliot.wordpress.com/2012/03/13/ios-5-1-vs-stdout/

于 2012-09-20T00:49:39.977 に答える