Команда оболочки в файле .m? - PullRequest
1 голос
/ 20 мая 2011

Я пытался использовать system () для запуска команды оболочки в файле .m, но безрезультатно.Как можно выполнить команду оболочки из файла .m в Xcode?

#import "AppController.h"


@implementation AppController
- (void)awakeFromNib
{
    [output setStringValue:@"Awaiting orders, sir."];
}

- (IBAction)convertFile:(id)sender
{
    NSString *string = [input stringValue];
    NSString *string2 = @"tar czvf ProjectFiles.tar.gz ";



    NSString *stringCmd = [NSString stringWithFormat:@"%@ %@", string2, string];

    system(stringCmd);
}
@end

Ответы [ 2 ]

1 голос
/ 20 мая 2011

NSTask является альтернативой.Проверьте NSTask Ссылка класса

0 голосов
/ 20 мая 2011

Ваш код не удался, потому что system ожидает строку C ( char *), а ваш stringCmd равен NSString *.

Попробуйте использовать:

system([stringCmd cStringUsingEncoding:NSASCIIStringEncoding]);

Также обратите внимание, что system запускает команду в оболочке, поэтому следует помнить о возможных проблемах безопасности. Если ваша входная строка @ "tt.txt; echo \" aa \ "" , ваш код будет работать

tar czvf ProjectFiles.tar.gz tt.txt; echo "aa"

Это может или не быть тем, что вы намереваетесь.

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