Unix System llamada en Objective-C
-
19-09-2019 - |
Pregunta
¿Es posible hacer llamadas al sistema en Objective-C?
Tengo el siguiente código:
if (!system("ls -l")) {
NSLog(@"Successfully executed");
} else {
NSLog(@"Error while executing the command");
}
Como llegar a la salida?
Gracias
Solución
Este es un candidato perfecto para el uso de -[NSFileManager contentsOfDirectoryAtPath:error:]
en lugar de envolver una función de shell incorporado y analizar la salida. Para los comandos de propósito general donde se necesita la salida - y donde no hay una funcionalidad equivalente "gratis" en Cocoa (sólo se necesita tiempo para aprender la API está disponible) - NSTask es generalmente una alternativa mucho mejor que system()
.
Otros consejos
Debe utilizar NSTask . Si sólo necesita los resultados de ls
, hay envolturas de sistemas de archivos más apropiados en Cocoa.
Si te gusta hacerlo de la forma C se puede utilizar popen
. Esto puede ser usado para leer la salida también. Sin embargo, las respuestas sobre el uso de soluciones de Objective-C son probablemente los que mejor.
Objetivo-C no evita que un programa para invoque system()
o cualquiera de sus equivalentes.
Cocoa Touch hace.