2011-04-23 50 views
0

由于某些原因,当我尝试通过NSTask运行任务时,我收到错误消息:“启动路径不可访问”。使用NSTask作为根 - 错误:“启动路径不可访问”

我的应用程序以root身份运行。如果我在终端键入EXACT命令,它运行良好,所以我有点困惑。

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

任何人都知道这是为什么发生?

注意:仅供参考,试图让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

是从您的应用程序来的错误信息,或重新启动吗?如果您没有将其标准错误更改为指向其他任何地方,它将写入您的应用程序所执行的同一标准错误,因此您可能实际上正在启动重新启动,并且错误消息实际上是来自重新启动。

@try之后加一个@catch块,看看NSTask是否真的失败,并检查pathToRelaunch

如果您有@catch区块,请编辑您的问题以包含它。如果事实证明重启是发生故障的地方,但pathToRelaunch看起来不错,请编辑您的问题以包含重启工具中的相关源代码。