Domanda

E 'possibile effettuare la chiamata di sistema in Objective-C?

Ho il seguente codice:

if (!system("ls -l")) {
    NSLog(@"Successfully executed"); 
} else {
      NSLog(@"Error while executing the command"); 
}

Come per ottenere il risultato?

Grazie

È stato utile?

Soluzione

Questo è un candidato perfetto per l'utilizzo di -[NSFileManager contentsOfDirectoryAtPath:error:] invece di avvolgere una funzione di shell incorporato e analisi dell'output. Per i comandi di uso generale in cui è necessario l'output - e dove non v'è alcuna funzionalità equivalente "gratis" in Cocoa (ci vuole solo tempo per imparare le API disponibili) - NSTask è generalmente un'alternativa molto meglio di system().

Altri suggerimenti

Si dovrebbe usare NSTask . Se avete solo bisogno dei risultati di ls, ci sono più adeguati involucri filesystem in Cocoa.

Se ti piace fare nel modo C è possibile utilizzare popen. Questo può essere usato per leggere l'output anche. Ma le risposte sull'utilizzo di soluzioni Objective-C sono probabilmente migliori.

Objective-C non impedisce un programma per invoque system() o uno qualsiasi dei suoi equivalenti.

Cocoa Touch fa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top