Resumir comentarios y fragmentos para que estén en un solo lugar.
programa A C siempre tiene un código salida, que el programa puede decidir por sí mismo si se termina normalmente, mediante la devolución de un valor de la función main
o llamando a la función exit
. Si el programa termina anormalmente, por ejemplo, por una falla de segmentación, el sistema operativo decide el código de salida.
En Unix (Posix), el código de salida es un valor de 8 bits: 0-255. Se combina con algunos otros metadatos a un estado : los otros metadatos incluyen información acerca de si el programa terminó normalmente o no, si se terminó por una señal, y si es así, qué señal. Para obtener detalles, consulte la página del manual wait(2).
En Unix, en el shell, se puede acceder al estado del comando anterior como la variable especial $?
. Como el código de salida es solo de 8 bits, y se trata como un entero sin signo, si devuelve un valor negativo, se convierte en uno positivo: -1 se convierte en 255. Del mismo modo, si devuelve un valor superior a 255 solo el mínimo se utilizan significativos 8 bits: 256 se convierte en 0.
El tipo de retorno de main
es int
, en lugar de short
o char
, porque no hay beneficio en particular en lo que es un tipo más pequeño, sobre todo en este momento de la historia, décadas después de que se fue decidido. Cambiarlo ahora solo causaría complicaciones innecesarias.
Si desea ejecutar un programa desde C, la biblioteca estándar proporciona la función system
, que fácilmente devuelve el estado del programa. (Tenga en cuenta que system
ejecuta comandos a través del shell, y debe tener mucho cuidado al escanear todo correctamente si le da al comando cualquier nombre de archivo provisto externamente u otras cosas en la línea de comandos.)
Para mayor flexibilidad, puede ejecutar otros programas que utilizan el sistema llaman al fork
, execl
(o una de sus variantes, consulte la página del manual exec(3)) y wait
(ya mencionado anteriormente). Esto es poderoso y flexible, pero también es fácil cometer errores, así que asegúrese de leer la documentación y ver algunos ejemplos de programas primero. (Por otro lado, es muy divertido aprender esto.)
No hay verdadera ventaja de elegir 'short' sobre' int' a menos que tengas un montón de ellos en el mismo lugar (matriz o estructura).No es más rápido tener un 'corto' y en los ABI modernos a menudo ni siquiera ahorras espacio al elegirlo. En algunos lugares, 'short' es más lento porque tiene que firmar la extensión cuando la carga. –
sorprendido por un voto negativo .. !!! –
@Jeegar Patel ... debes entender que algunas personas siempre odian –