Executing shell commands with NSTask - Objective-C Cocoa
Asked Answered
T

1

18

I have been searching for days and hours for this, I have seen a lot of examples of this, but cannot figure out how NSTask works, let's say I wanted to execute the command killall Dock or defaults write com.apple.Finder AppleShowAllFiles YES something like that, how would I go about doing this.

I know how to execute an external shell script (sh) but need to be more sophisticated and use NSTask instead.

Thanks for any help!!

Terzetto answered 31/7, 2013 at 16:49 Comment(0)
E
29

You could do something like:

NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/bin/bash"];
[task setArguments:@[ @"-c", @"/usr/bin/killall Dock" ]];
[task launch];

Exactly what launch path and arguments you provide are dictated by the command you want to run and its parameters.

Earlap answered 31/7, 2013 at 17:39 Comment(2)
Thanks for the reply!, how would I find out what launch path I need for different commands?Terzetto
My example cheats and runs a shell because it is often easier to supply the command and parameters that way. You can also pass the path to the unix executable Hyatt you want to run.Earlap

© 2022 - 2024 — McMap. All rights reserved.