日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

mac运行linux命令,iOS:mac.app执行shell命令

發布時間:2024/7/23 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mac运行linux命令,iOS:mac.app执行shell命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

報錯

1:

錯誤:

/bin/bash: line 1: /Users/liuyaqiang/Desktop/GitHub/KTMRobot/auto.sh: Operation not permitted

解決方法:

Singing&Capabilitiesy移除AppSandbox

代碼

import Cocoa

class CommandRunner: NSObject {

/** 同步執行

* command: shell 命令內容

* returns: 命令行執行結果,積壓在一起返回

*

* 使用示例

let (res, rev) = CommandRunner.sync(command: "ls -l")

print(rev)

*/

static func sync(command: String) -> (Int, String) {

let utf8Command = "export LANG=en_US.UTF-8\n" + command

return sync(shellPath: "/bin/bash", arguments: ["-c", utf8Command])

}

/** 同步執行

* shellPath: 命令行啟動路徑

* arguments: 命令行參數

* returns: 命令行執行結果,積壓在一起返回

*

* 使用示例

let (res, rev) = CommandRunner.sync(shellPath: "/usr/sbin/system_profiler", arguments: ["SPHardwareDataType"])

print(rev)

*/

static func sync(shellPath: String, arguments: [String]? = nil) -> (Int, String) {

let task = Process()

let pipe = Pipe()

var environment = ProcessInfo.processInfo.environment

environment["PATH"] = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

task.environment = environment

if arguments != nil {

task.arguments = arguments!

}

task.launchPath = shellPath

task.standardOutput = pipe

task.launch()

let data = pipe.fileHandleForReading.readDataToEndOfFile()

let output: String = String(data: data, encoding: String.Encoding.utf8)!

task.waitUntilExit()

pipe.fileHandleForReading.closeFile()

return (Int(task.terminationStatus), output)

}

/** 異步執行

* command: shell 命令內容

* output: 每行的輸出內容實時回調(主線程回調)

* terminate: 命令執行結束狀態(主線程回調)

*

* 使用示例

CommandRunner.async(command: "ls -l",

output: {[weak self] (str) in

self?.appendLog(str: str)

},

terminate: {[weak self] (code) in

self?.appendLog(str: "end \(code)")

})

*/

static func async(command: String,

output: ((String) -> Void)? = nil,

terminate: ((Int) -> Void)? = nil) {

let utf8Command = "export LANG=en_US.UTF-8\n" + command

async(shellPath: "/bin/bash", arguments: ["-c", utf8Command], output:output, terminate:terminate)

}

/** 異步執行

* shellPath: 命令行啟動路徑

* arguments: 命令行參數

* output: 每行的輸出內容實時回調(主線程回調)

* terminate: 命令執行結束狀態(主線程回調)

*

* 使用示例

CommandRunner.async(shellPath: "/usr/sbin/system_profiler",

arguments: ["SPHardwareDataType"],

output: {[weak self] (str) in

self?.appendLog(str: str)

},

terminate: {[weak self] (code) in

self?.appendLog(str: "end \(code)")

})

*/

static func async(shellPath: String,

arguments: [String]? = nil,

output: ((String) -> Void)? = nil,

terminate: ((Int) -> Void)? = nil) {

DispatchQueue.global().async {

let task = Process()

let pipe = Pipe()

let outHandle = pipe.fileHandleForReading

var environment = ProcessInfo.processInfo.environment

environment["PATH"] = "/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"

task.environment = environment

if arguments != nil {

task.arguments = arguments!

}

task.launchPath = shellPath

task.standardOutput = pipe

outHandle.waitForDataInBackgroundAndNotify()

var obs1 : NSObjectProtocol!

obs1 = NotificationCenter.default.addObserver(forName: NSNotification.Name.NSFileHandleDataAvailable,

object: outHandle, queue: nil) { notification -> Void in

let data = outHandle.availableData

if data.count > 0 {

if let str = NSString(data: data, encoding: String.Encoding.utf8.rawValue) {

DispatchQueue.main.async {

output?(str as String)

}

}

outHandle.waitForDataInBackgroundAndNotify()

} else {

NotificationCenter.default.removeObserver(obs1)

pipe.fileHandleForReading.closeFile()

}

}

var obs2 : NSObjectProtocol!

obs2 = NotificationCenter.default.addObserver(forName: Process.didTerminateNotification,

object: task, queue: nil) { notification -> Void in

DispatchQueue.main.async {

terminate?(Int(task.terminationStatus))

}

NotificationCenter.default.removeObserver(obs2)

}

task.launch()

task.waitUntilExit()

}

}

}

總結

以上是生活随笔為你收集整理的mac运行linux命令,iOS:mac.app执行shell命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。