單擊按鈕后,我試圖在 macOS 應用程式中運行命令列。但是當我運行下面的代碼時,它總是向我顯示這個錯誤“Domain=NSPOSIXErrorDomain Code=13 Permission denied”。而且,我已經禁用了沙箱。感謝您的幫助。
let command = "/Users/donghanhu/Documents/TestFolder"
var args = [String]()
args.append("ls")
let task = Process()
task.launchPath = command
task.arguments = args
do {
try task.run()
} catch {
print("something went wrong, error: \(error)")
}
task.waitUntilExit()
uj5u.com熱心網友回復:
我認為您誤解了Process作業原理的某些功能。檔案
行程在由幾個專案的當前值定義的環境中運行:當前目錄、標準輸入、標準輸出、標準錯誤和任何環境變數的值。默認情況下,Process 物件從啟動它的行程繼承其環境。
因此該行程將在父行程的當前目錄中運行。看起來您正在嘗試將當前目錄更改為
/Users/donghanhu/Documents/TestFolder
通過使用launchPath的Process,但launchPath應設定為可執行檔案要在子運行。在這種情況下,我認為您希望launchProcess成為"/bin/ls"因為您正在嘗試運行ls命令。
因此,如果您想要一個ls用于列出檔案夾內容的行程,它將/Users/donghanhu/Documents/TestFolder是:
import Foundation
let task = Process()
task.launchPath = "/bin/ls"
task.arguments = ["/Users/donghanhu/Documents/TestFolder"]
do {
try task.run()
} catch {
print("something went wrong, error: \(error)")
}
task.waitUntilExit()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/334416.html
