2011-12-28 20 views
6

Estoy usando el comando system() en C para ejecutar comandos como sc query mysql o .valor de retorno del sistema() en C

Si el parámetro es un puntero nulo, entonces devuelve 1 si el procesador cmd está bien, de lo contrario, devuelve 0. En caso de ejecución de comandos éxito devuelve 0.

Mi pregunta es: ¿Puedo obtener una lista de su regreso ¿valores? ¿Cuánto devolverá si el comando no es válido o cuál será el valor de retorno en la ejecución fallida? Quiero hacer diferentes cosas dependiendo del valor de retorno de system().

+1

duplicado Posible de [código de retorno de sistema()] (https://stackoverflow.com/questions/6904592/return-code-of-system) – CDahn

Respuesta

8

A medida que el docs sistema estatal() devuelven -1 si la creación del nuevo proceso para la orden a ejecutar falla, de lo contrario, devuelve el código de salida del comando ejecutado. este es el mismo valor que puede recuperar utilizando echo $? en Unix o echo %ERRORLEVEL% en Windows después de ejecutar el mismo comando en un shell. Por lo tanto, si desea manejar los valores devueltos, debe observar qué devuelven los comandos ejecutados.

2

sistema() devuelve el código de salida del proceso que inicia.

En general, los códigos de salida solo tienen la convención de que un código de salida de 0 significa éxito y no cero significa fallo. Para conocer el significado real de los diversos códigos de salida, son específicos de cada programa, por lo tanto, según el capricho del programador. Deberá buscar la documentación del programa en particular que esté ejecutando (aunque la mayoría de las veces no está documentado, por lo que deberá leer el código fuente)

11

Todo lo que necesita hacer es man system para saber más sobre system()

DESCRIPCIÓN sistema() ejecuta una orden especificada en el comando llamando/bin comando -c/sh, y regresa después de que el comando se ha completado . Durante la ejecución del comando, SIGCHLD se bloqueará, y se ignorarán SIGINT y SIGQUIT.

VALOR DEVUELTO El valor devuelto es -1 en caso de error (p. Ej. Fork (2) failed) y el estado de retorno del comando en caso contrario. Este último estado de devolución tiene el formato especificado en espera (2). Por lo tanto, el código de salida del comando será WEXITSTATUS (estado). En el caso/bin/sh podría no ejecutarse, el estado de salida será el de un comando que hace exit (127). Si el valor del comando es NULL, system() devuelve un valor distinto de cero si el shell está disponible, y cero si no lo está.

+2

#include el fin de utilizar WEXITSTATUS (status) macro .. – bazz

Cuestiones relacionadas