2009-12-01 4 views
3

Я хочу запустить простую команду из моего приложения Cocoa через код, НЕ создавая сценарий оболочки и запуская его таким образом, но запуская его через приложение, имея возможность определять все и менять его на лету.Как запустить команду оболочки из моего приложения Cocoa?

+0

Возможный дубликат [Выполнение команды терминала из приложения Cocoa] (http://stackoverflow.com/questions/412562/execute-a-terminal-command-from-a-cocoa-app) – outis

ответ

4

Функция

void runSystemCommand(NSString *cmd) 
    { 
     [[NSTask launchedTaskWithLaunchPath:@"/bin/sh" 
      arguments:[NSArray arrayWithObjects:@"-c", cmd, nil]] 
      waitUntilExit]; 
    } 

Пример использования:

#import <Foundation/Foundation.h> 

void runSystemCommand(NSString *cmd) 
{ 
    [[NSTask launchedTaskWithLaunchPath:@"/bin/sh" 
     arguments:[NSArray arrayWithObjects:@"-c", cmd, nil]] 
     waitUntilExit]; 
} 

int main(int argc, const char **argv) 
{ 
    NSAutoreleasePool *pool; 

    pool = [NSAutoreleasePool new]; 

    runSystemCommand(@"ls"); 
    [pool release]; 
    return 0; 
} 
1

ответ streetparade дал не будет работать большую часть времени, обратитесь к этой статье

http://www.cocoadev.com/index.pl?NSTaskArguments

+1

Это не касается прямого ответа на уличную улицу. Что не так с ответом (помимо общей глупости использования оболочки для запуска команд вместо того, чтобы просто запускать их самостоятельно)? –

0

NSTask - это путь, как отмечали другие. Но если ваш скрипт должен работать с правами администратора, всегда есть STPrivilegedTask.

Смежные вопросы