0

我设置了一个文件句柄来读取 stdout 的内容,当我尝试使用 availableData 从中提取数据时,它会挂起,但仅当应用程序在我的设备上手动运行时。当我通过 Xcode 在我的设备上或在模拟器上运行该应用程序时,它会按预期提取数据,而我的其余代码可以完美运行。任何想法发生了什么?我的代码如下:

int pipefd[2];                
pipe(pipefd);
dup2(pipefd[1], STDOUT_FILENO);
close(pipefd[1]);

NSFileHandle *stdoutReader = [[NSFileHandle alloc] initWithFileDescriptor:pipefd[0]];

// this method writes output to stout
int result = [self createOutput:string1:string2];

// code hangs on this next line when app is run manually on device)
NSData *stdoutData = [stdoutReader availableData];

我想知道是否在我的设备上,createOutput 方法运行得更慢,所以当我尝试从标准输出中获取数据时,还没有?

4

1 回答 1

1

好吧,看起来 iOS 5.1 不再允许写入标准输出了。对于有兴趣阅读更多内容的任何人,这里有一篇内容丰富的博客文章:http ://spouliot.wordpress.com/2012/03/13/ios-5-1-vs-stdout/

于 2012-09-20T01:03:57.623 回答