我正在尝试使用STPrivilegedTask运行一个长时间运行的任务。 它开始很好,工作2分钟。但它只是停止执行(与直接从终端运行相比)。 这是代码(Swift)
NSNotificationCenter.defaultCenter().addObserverForName(NSFileHandleDataAvailableNotification , object: nil, queue: nil, usingBlock: { note in
var data = note.object?.availableData
let output = NSString(data: data!, encoding: NSUTF8StringEncoding)
self.logText.stringValue = self.logText.stringValue + " \n " + output!
})
let task = STPrivilegedTask()
task.setLaunchPath("/bin/sh")
task.setArguments(["-c", cmd]);
task.launch()
task.waitUntilExit()
task.outputFileHandle().waitForDataInBackgroundAndNotify()
命令本身是这样的:
/Users/alexandrius/Library/Developer/Xcode/DerivedData/Recover-fczfhpkdplwbujelgmwhirjcesxk/Build/Products/Debug/Recover.app/Contents/Resources/foremost -i /dev/disk2 -o /Users/alexandrius/RECOVER/req -v
*最重要的是文件恢复软件,我正在尝试为它做gui
使用或不使用waitUntilExit方法,结果相同。