Как использовать Process () в Swift 3 для Linux?

Следующая функция выполняет процесс в Swift 3 в macOS. Но если я запускаю тот же код в Ubuntu, я получаю ошибку, что Process - это неразрешенный идентификатор.

Как запустить процесс /задачу в Swift 3 для Ubuntu и получить ее вывод?

import Foundation

// runs a Shell command with arguments and returns the output or ""
class func shell(_ command: String, args: [String] = []) -> String {

    let task = Process()
    task.launchPath = command
    task.arguments = args

    let pipe = Pipe()
    task.standardOutput = pipe
    task.launch()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output: String? = String(data: data,
                                 encoding: String.Encoding.utf8)
    task.waitUntilExit()

    if let output = output {
        if !output.isEmpty {
            // remove whitespaces and newline from start and end
            return output.trimmingCharacters(in: .whitespacesAndNewlines)
        }
    }
    return ""
}
7 голосов | спросил Sebastian 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 11:10:09 +0300 2016, 11:10:09

1 ответ


0

Я не могу проверить это сам в настоящее время, но в соответствии с исходным кодом https://github.com/apple/swift-corelibs -foundation /блоб /ведущий /Фонд /NSTask.swift , соответствующий класс (все еще) называется Task в Linux, а не Process как на платформах Apple.

ответил Martin R 29 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 29 Sep 2016 11:18:07 +0300 2016, 11:18:07

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132