当我直接在终端中输入时 - 它按预期方式工作,并且如果应用程序未运行则返回,如果没有运行,则返回。终端命令无法识别?
lsappinfo list | grep -v grep | grep bundleID | grep com.test.myapp | wc -l
但是,当我使用下面的代码(swift 3 - macOS)时,它说这是一个无法识别的命令?
// DECLARE TASK
let task = Process()
// DEFINE THE PATH
task.launchPath = "/usr/bin/lsappinfo"
// DEFINE THE ARGUMENTS
task.arguments = ["list | grep -v grep | grep bundleID | grep com.test.myapp | wc -l"]
// DECLARE outputPipe
let outputPipe = Pipe()
// RUN THE TASK
task.launch()
// DECLARE data
let data = outputPipe.fileHandleForReading.readDataToEndOfFile()
// DECLARE output AS THE UTF-8 STRING OF THE TERMINAL'S OUTPUT
let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)
print(output!)
if output == "0" {
print("App is not running!")
} else {
print("App is running!")
}
// PAUSE UNTIL COMPLETED
task.waitUntilExit()
是否有人可以告诉我在哪里出了问题,因为我是新来的斯威夫特,并且仍然在努力让我的头周围的语言/语法。
谢谢大家提前。
查看'NSWorkspace'及其'runningApplications'方法,以获得更简单的解决方案。示例这里http://stackoverflow.com/questions/37646605/how-can-you-get-information-such-as-users-window-for-example-using-the-nstask-c。 –
感谢马丁 - 这就像一个魅力! –