Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
NSTask Sample for Swift
import Cocoa
import Foundation
var str = "Hello, playground"
var task:NSTask = NSTask()
var pipe:NSPipe = NSPipe()
task.launchPath = "/bin/ls"
task.arguments = ["-la"]
task.standardOutput = pipe
var handle = pipe.fileHandleForReading
var data = handle.readDataToEndOfFile()
var result_s = NSString(data: data, encoding: NSUTF8StringEncoding)

Seasons7 commented Jul 22, 2015

save this file.
chmod +x nstask.swift
xcrun swift a.swift -f /Applications/

for what it's worth, pipe and task are immutable and should be let

that is to say:

                let task = NSTask()
                let pipe = NSPipe()

                task.launchPath = "/bin/ls"
                task.arguments = ["-la"]
                task.standardOutput = pipe

the other variables might also need to be declared let.

ingconti commented Oct 1, 2016

for swift 3.0:

    // Create a Task instance (was NSTask on swift pre 3.0)
    let task = Process()

    // Set the task parameters
    task.launchPath = "/bin/ls"
    task.arguments = ["-laF@" , filePath]

    // Create a Pipe and make the task
    // put all the output there
    let pipe = Pipe()
    task.standardOutput = pipe

    // Launch the task

    // Get the data
    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output = NSString(data: data, encoding: String.Encoding.utf8.rawValue)


@ingconti: Do you have any sample how to interact with standardInput? And why Process is Task on Swift 3 for Linux? Thank you.

is it possible to run multiple commands?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment