尝试通过游乐场中的 Process() 实例执行终端命令时,我遇到了域权限错误。我假设我必须以某种方式关闭域检查,但我不知道该怎么做。如果可以使用代码解决,我也无法在此处找到类似问题的答案。如果这已经被问到,我很抱歉。
运行 Xcode 版本 11.2.1 (11B500)
Swift 5.1.2
MacOS
此脚本运行“p4”命令(Perforce SCM 命令行应用程序)以提取正在运行的作业列表并打印它们。
import Foundation
NSSetUncaughtExceptionHandler { exception in
print(" Exception thrown: \(exception)")
}
func shell(_ args: String...) -> Int32 {
var returnCode: Int32
let task = Process()
let url = URL(fileURLWithPath: "/path_to/p4")
let outputPipe = Pipe()
let errorPipe = Pipe()
task.standardOutput = outputPipe
task.standardError = errorPipe
task.executableURL = url
task.arguments = args
do {
try task.run()
print("Running the task\n\n")
let outputData = outputPipe.fileHandleForReading.readDataToEndOfFile()
let errorData = errorPipe.fileHandleForReading.readDataToEndOfFile()
print ("Raw output:\n\tOutput data:\n\t\(outputData)\n\tError: \(errorData)\n\n")
let output = String(decoding: outputData, as: UTF8.self)
let error = String(decoding: errorData, as: UTF8.self)
print ("Decoded output:\n\tOutput data:\n\t\(output)\n\tError: \(error)\n\n")
returnCode = task.terminationStatus
} catch {
print(error)
returnCode = -1
}
return returnCode
}
shell("monitor", "show", "-ael")
操场返回以下内容:
Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"
如果需要其他信息或有帮助,请告诉我。
任何帮助或建议将不胜感激,并感谢您的时间和考虑。
问候,斯科特