Esta é provavelmente uma pergunta estúpida, mas como posso executar um comando shell do meu aplicativo Cocoa?
Eu tenho o comando como uma string “comando”, mas pode facilmente manipular dados conforme necessário.
Não há necessidade de obter um valor de saída retornado.
NSTask é muito fácil de fazer isso. Para uma chamada síncrona, você pode usar algo como este fragment:
NSString *path = @"/path/to/executable"; NSArray *args = [NSArray arrayWithObjects:..., nil]; [[NSTask launchedTaskWithLaunchPath:path arguments:args] waitUntilExit];
A chamada -waitUntilExit
garante que termine antes de continuar. Se a tarefa pode ser assíncrona, você pode remover essa chamada e deixar o NSTask fazer isso.
Se você quer apenas executar alguma coisa e não se importa com o código de saída ou retorno (por exemplo, você quer tocar em um arquivo), você pode apenas fazer
system("touch myfile.txt");
Fácil assim.
NSTask
Usando a class NSTask, seu programa pode executar outro programa como um subprocess e pode monitorar a execução desse programa.