Skip to content

Instantly share code, notes, and snippets.

@Seasons7
Created July 22, 2015 19:21
Show Gist options
  • Save Seasons7/836d3676884a40c8c98a to your computer and use it in GitHub Desktop.
Save Seasons7/836d3676884a40c8c98a to your computer and use it in GitHub Desktop.
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
task.launch()
var handle = pipe.fileHandleForReading
var data = handle.readDataToEndOfFile()
var result_s = NSString(data: data, encoding: NSUTF8StringEncoding)
print(result_s)
@Gerst20051
Copy link

thanks! @ingconti

@pakLebah
Copy link

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

Copy link

ghost commented Mar 16, 2017

is it possible to run multiple commands?

@shishanyu
Copy link

Updated for Swift 4

//: Playground - noun: a place where people can play

import Cocoa
import Foundation

var task = Process()
var pipe = Pipe()

task.executableURL = URL(fileURLWithPath: "/bin/ls")
task.arguments = ["-la","/Users/"] //multiple options
task.standardOutput = pipe
try task.run()

var handle = pipe.fileHandleForReading
var data = handle.readDataToEndOfFile()
var printing = String (data: data, encoding: String.Encoding.utf8)
print(printing!)

@alisanie
Copy link

I'm using this method for running app but I got "Message from debugger: Terminated due to signal 9".Any idea?

 let path=("\(FileManager.default.currentDirectoryPath)/data/app/setup.pkg")
            
            let buildTask: Process = Process()
            
            //Path for open
            buildTask.launchPath = "/usr/bin/open"
            buildTask.arguments = [path]
            buildTask.launch()

Message from debugger: Terminated due to signal 9

@welljsjs
Copy link

welljsjs commented Feb 8, 2018

buildTask.launch() is not up to date anymore. Since High Sierra, Process().lauch() is deprecated. Use Process().run instead and catch the error that may be thrown.
See Apple Developer Documentation for launch()

This Tutorial goes a bit more into detail regarding NSTasks.

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