Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

250
Views
¿Está bien usar exit (1) para cancelar el programa o debería intentar devolver 1 desde main ()?

He usado exit(1) extensamente en mi código porque hace (espero) exactamente lo que quiero: abortar el programa. Muy bien imprimo un mensaje de error (o lo pongo en stderr), y luego simplemente me voy.

Pero escuché algunas escuelas de pensamiento que esto es malo por alguna razón y no entiendo por qué. La cantidad de trabajo que uno necesitaría para devolver un valor de error de cada función donde sea posible, y luego navegar a través de los retornos en cascada a la pantalla principal para que el programa salga "naturalmente"... ¿Hay alguna diferencia?

¿Hay escenarios específicos en los que importa? Incluso cuando uso errno y perror(), todavía es mucho más fácil simplemente salir (1) desde el punto donde ocurrió el error y sin hacer que el código sea menos legible.

¿Tengo su bendición para usar exit(1) ?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Es una elección que debes hacer por ti mismo.

Si está escribiendo una biblioteca, realmente debe informar la falla a la persona que llama, que puede recuperarse de maneras que usted no puede internamente, y que podría necesitar realizar otra limpieza que no se realiza mediante controladores atexit() registrados.

Si su código puede llamarse desde C ++ u otros lenguajes de alto nivel, entonces, de nuevo, no salga unilateralmente, ya que eso evita que los destructores se ejecuten para realizar una limpieza similar.

Cuando verifique el uso de la memoria usando Valgrind, exit() dejará muchos objetos en el estado "todavía accesible", lo que dificultará encontrar sus fugas reales.

Por lo tanto, generalmente recomiendo regresar desde main() , pero toleraría algún uso de exit() en el código específico del programa que nunca terminará en una biblioteca.

over 4 years ago · Santiago Trujillo Report

0

La función de biblioteca C void exit(int status); finaliza el proceso de llamada inmediatamente. Cualquier descriptor de archivo abierto que pertenezca al proceso se cierra y los hijos del proceso son heredados por el proceso 1, init, y el padre del proceso recibe una señal SIGCHLD.

Por lo tanto, sabemos que la función exit() provoca la eliminación del programa actual, pero recuerde free() cualquier recurso asignado al montón ( si puede ) antes de llamar a la función exit() . Entonces, usar exit() está absolutamente bien.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!