使用NSTask作为root - 错误:“启动路径无法访问”

时间:2011-04-23 19:50:54

标签: cocoa nstask sparkle

出于某种原因,当我尝试通过NSTask运行任务时,我收到错误消息:“启动路径无法访问”。

我的应用以root身份运行。如果我在终端输入完全相同的命令,它运行正常,所以我有点困惑。

我的应用程序将名为“重新启动”的工具复制到NSTemporaryDirectory()。如果我尝试从这里运行它,我会得到“启动路径无法访问”。这是奇怪的事情,如果我手动将工具复制到我的桌面,然后硬编码NSTask中的路径,它将正确执行。我知道为什么会这样做。

任何人都知道为什么会这样吗?

注意:仅供参考,试图让Sparkle从github开始工作。

以下是代码:

@try{
[NSTask launchedTaskWithLaunchPath:relaunchPath arguments:[NSArray arrayWithObjects:pathToRelaunch, [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]], nil]];
}

其中

relaunchPath = @"/var/folders/zz/zzzivhrRnAmviuee+++++++++++/-Tmp-/relaunch";

1 个答案:

答案 0 :(得分:0)

错误消息是来自您的应用还是重新启动?如果您没有将其标准错误更改为指向其他任何位置,它将写入您的应用程序所执行的相同stderr,因此您实际上可以成功启动重新启动,并且错误消息实际上来自重新启动。

@catch之后添加@try块,以查看NSTask是否确实失败,并检查pathToRelaunch

如果您有@catch个阻止,请修改您的问题以包含它。如果发现重新启动是发生故障的地方,但pathToRelaunch看起来正确,请编辑您的问题以包含重新启动工具中的相关源代码。

相关问题