0

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

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

我的应用程序将一个名为 relaunch 的工具复制到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";
4

1 回答 1

0

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

在你之后添加一个@catch@try来查看 NSTask 是否真的失败,然后检查pathToRelaunch.

如果您有@catch障碍,请编辑您的问题以包含它。如果事实证明重新启动是发生故障的地方,但pathToRelaunch看起来正确,请编辑您的问题以包含来自重新启动工具的相关源代码。

于 2011-04-24T06:26:31.180 回答