當我直接在終端中輸入時 - 它按預期方式工作,並且如果應用程序未運行則返回,如果沒有運行,則返回。終端命令無法識別?
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。 –
感謝馬丁 - 這就像一個魅力! –