出于某种原因,当我尝试通过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";
答案 0 :(得分:0)
错误消息是来自您的应用还是重新启动?如果您没有将其标准错误更改为指向其他任何位置,它将写入您的应用程序所执行的相同stderr,因此您实际上可以成功启动重新启动,并且错误消息实际上来自重新启动。
在@catch
之后添加@try
块,以查看NSTask是否确实失败,并检查pathToRelaunch
。
如果您有@catch
个阻止,请修改您的问题以包含它。如果发现重新启动是发生故障的地方,但pathToRelaunch
看起来正确,请编辑您的问题以包含重新启动工具中的相关源代码。