Reputation: 7091
This is probably a stupid question, but how can I execute a shell command from my Cocoa app?
I have the command as a string "command", but can easily manipulate data as needed.
There is no need to get a returned output value.
Upvotes: 18
Views: 22094
Reputation: 44769
NSTask is pretty easy to do this with. For a synchronous call, you can use something like this fragment:
NSString *path = @"/path/to/executable";
NSArray *args = [NSArray arrayWithObjects:..., nil];
[[NSTask launchedTaskWithLaunchPath:path arguments:args] waitUntilExit];
The -waitUntilExit
call makes sure it finishes before proceeding. If the task can be asynchronous, you can remove that call and just let the NSTask do it's thing.
Upvotes: 30
Reputation: 49054
If you just want to run something and don't care about the output or return code (for example, you want to touch a file), you can just do
system("touch myfile.txt");
Easy as that.
Upvotes: 9
Reputation: 9040
Using the NSTask class, your program can run another program as a subprocess and can monitor that program’s execution.
Upvotes: 3