为什么这个NSTask terminationStatus返回一个nil值?

dem*_*319 0 cocoa objective-c

我知道任务返回一个标准错误的值,我可以通过输入"echo $?"看到 在手动运行任务后在终端中.

现在这段代码:

[aTask launch];
[aTask waitUntilExit];
int status = [aTask terminationStatus];
Run Code Online (Sandbox Code Playgroud)

看起来不错,但gdb说状态是0x0的位置,无法访问.有人知道Xcode中NSTask对象中的任何错误吗?难道我做错了什么?

谢谢你的回复.

bbu*_*bum 5

实际上,任务执行正常并通过返回状态为0退出并显示成功.当您在终端中回显结果时,它是否为0?

根据您的问题发表评论:

这是来自我的gdb,在执行上面的代码行之后:(gdb)po status无法访问地址0x0处的内存 - demonslayer319

一个int不是一个对象; 因此,po status不会奏效. po通过发送-description到对象来工作,但它的方式与普通的旧objc_msgSend()电话略有不同.因此,当gdb尝试将值0视为对象的地址时,gdb会检测到它可能无效,因为0无法解除引用地址.

试试吧p status.

(并且,是的,任务可能是零 - 你没有正确地创建任务 - 因此,nil-eats-message导致状态为0)