Как я могу запустить команду оболочки из моего приложения Какао? - PullRequest
3 голосов
/ 02 декабря 2009

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

Ответы [ 4 ]

6 голосов
/ 02 декабря 2009

Используйте NSTask. http://www.cocoadev.com/index.pl?NSTask

4 голосов
/ 02 декабря 2009

Функция

 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 голос
/ 12 марта 2010

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

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

0 голосов
/ 12 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...