我知道任务返回一个值给标准错误,我可以通过输入"echo $?“来看到这个值。在终端中手动运行任务。
下面的代码是:
[aTask launch];
[aTask waitUntilExit];
int status = [aTask terminationStatus];看起来不错,但是gdb说状态是0x0的一个位置,不能被访问。有人知道Xcode中的NSTask对象中有什么bug吗?我做错了什么吗?
谢谢你的答复。
发布于 2009-12-29 18:08:13
实际上,任务执行得很好,并通过返回状态0表示成功。当您在终端中回显结果时,是0吗?
对你的问题的评论:
这是我的gdb,在执行了上面的代码之后:(gdb) po状态不能访问地址0x0 - demonslayer319的内存。
int不是一个对象;因此,po status不能工作。po的工作方式是将-description发送到对象,但它的方式与普通的objc_msgSend()调用略有不同。因此,当gdb试图将值0作为对象的地址处理时,gdb检测到它不可能有效,因为0作为一个地址无法取消引用。
试一试p status。
(是的,任务可能是0-您一开始就没有正确地创建任务--因此,零吃消息导致状态为0)。
发布于 2009-12-29 14:16:55
您确定正在创建的任务实际上已经创建了吗?除了diciu的响应外,如果aTask为零,-[NSTask terminationStatus]将返回零。这是因为返回对象的消息返回零,返回原语的消息返回0、0.0f、NO等。
通常您会用NSTask创建一个+[NSTask launchedTaskWithLaunchPath:arguments:]实例,而在这里创建失败通常是由于一个不正确指定的路径或零参数,这会生成一个异常。由于您没有提到任何异常,也没有发布用于创建任务的代码,因此很难说这是否是问题所在。
https://stackoverflow.com/questions/1974112
复制相似问题