Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

296
Vistas
¿Significado del código de salida 11 en C?

¿Cuál es el significado general de un código de salida 11 en C? Miré a mi alrededor y no puedo encontrar una respuesta definitiva, así que pensé en preguntar aquí. Viene cuando trato de agregar un elemento a un vector.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No encontraste una respuesta definitiva porque no la hay. Depende del autor del programa decidir qué códigos de salida desea utilizar. El estándar C solo dice que exit(0) o exit(EXIT_SUCCESS) indican que el programa es exitoso y que exit(EXIT_FAILURE) indica algún tipo de error. (Devolver un valor de main es equivalente a llamar a exit con ese valor). Los sistemas operativos más comunes, incluidos Windows, Linux, OSX, etc., usan 0 para el éxito y valores del 1 al 255 para indicar errores; aún elegir entre los códigos de error depende del escritor de la aplicación, el valor 11 no es nada especial.

Bajo Linux y la mayoría de las otras variantes de Unix, la señal número 11 indica una falla de segmentación , como lo señaló Kerrek SB . Una falla de segmentación ocurre cuando un programa realiza algún tipo de acceso no válido a la memoria, por lo que es una consecuencia plausible de acceder a una matriz fuera de los límites, o un error en la aritmética del puntero, o intentar acceder a un puntero nulo u otros errores relacionados con el puntero. La señal 11 no es lo mismo que el código de salida 11: cuando un programa muere debido a una señal, se marca como si hubiera sido asesinado por una señal, en lugar de haber salido normalmente. Los shells de Unix informan las señales informando un código de salida que es el número de señal más 128, por lo que 139 para una falla de segmentación.

over 4 years ago · Santiago Trujillo Denunciar

0

Las otras respuestas han perdido una posible ambigüedad en la frase "código de salida". Sospecho que lo que quiso decir con "código de salida" es el código de estado recuperado con la familia de wait de llamadas al sistema, como en:

 /* assume a child process has already been created */ int status; wait(&status); printf("exit code %d\n", status);

Si hace algo así, es posible que vea el "código de salida 11" si el proceso secundario falla. Si el proceso secundario realmente llamó a exit(11) , es posible que vea "código de salida 2816" en su lugar.

Sería mejor llamar a esas cosas "código de espera" o "estado de espera" en lugar de "código de salida", para evitar confusiones con el valor pasado para salir. Un código de espera contiene varias piezas de información empaquetadas en un solo número entero. Normalmente, no debería mirar el número entero directamente (como lo hice arriba en ese printf ). En su lugar, debe utilizar las macros W* de <sys/wait.h> para analizarlo.

Comience con las macros WIF* para averiguar qué tipo de cosas sucedió, luego use esa información para decidir qué otras macros W* usar para obtener los detalles.

 if(WIFEXITED(status)) { /* The child process exited normally */ printf("Exit value %d\n", WEXITSTATUS(status)); } else if(WIFSIGNALED(status)) { /* The child process was killed by a signal. Note the use of strsignal to make the output human-readable. */ printf("Killed by %s\n", strsignal(WTERMSIG(status))); } else { /* ... you might want to handle "stopped" or "continued" events here */ }
over 4 years ago · Santiago Trujillo Denunciar

0

No hay un estándar definido sobre qué códigos de salida debe establecer una aplicación en determinadas situaciones. ¡Depende totalmente del programador qué códigos de salida representan qué error o incluso qué éxito!

A veces, los programadores deciden que cualquier valor diferente de cero indica un error y, a veces, este valor es igual a los códigos de error del sistema operativo.

En Windows, se puede usar el código de salida 11 debido a problemas con un archivo. Si desea la descripción de este código de error (que es específico de Windows y no necesariamente de su aplicación), ejecute net helpmsg 11 .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda