Unix sistema di chiamata in Objective-C
-
19-09-2019 - |
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
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.