¿Cuál es la diferencia entre la salida (), _exit() y _exit() en C?funciones de salida en C
¿Cómo decido cuál usar?
En bash,
hombre 2 de salida
me dio la página _exit (2), mientras que
hombre 3 de salida
dio la página SALIR (3).
¿Cuál es la diferencia entre la salida (), _exit() y _exit() en C?funciones de salida en C
¿Cómo decido cuál usar?
En bash,
hombre 2 de salida
me dio la página _exit (2), mientras que
hombre 3 de salida
dio la página SALIR (3).
exit()
terminando después de la limpieza.
_exit()
terminando inmediatamente después de la llamada.
Si tiene alguna pila dañada mientras se llamaba a la función exit()
el programa se puede cerrar con la falla de segmentación, si está utilizando _exit()
, salga del programa en modo rápido.
De http://msdn.microsoft.com/en-us/library/6wdz5232.aspx que tienen
exit()
- Lleva a cabo los procedimientos completos de terminación de la biblioteca C, termina el proceso, y termina con el código de estado que se suministra.
_exit()
- Realiza procedimientos rápidos de finalización de la biblioteca C, finaliza el proceso y finaliza con el código de estado proporcionado.
_cexit()
- Realiza los procedimientos completos de finalización de la biblioteca C y regresa a la persona que llama, pero no finaliza el proceso.
_c_exit()
- Realiza procedimientos rápidos de finalización de la biblioteca C y regresa a la persona que llama, pero no finaliza el proceso.
De hombre:
salida:
Todas las funciones registradas con atexit (3) y on_exit (3) están llamados, en el orden inverso al de su inscripción ... Todo stdio abierto (3) corrientes están enrojecidos y cerrados. Los archivos creados por tmpfile (3) se eliminan._exit:
La función _exit() es como la salida (3), pero no llama a ninguna función registrada con atexit (3) o on_exit (3). Si vacía los almacenamientos intermedios de E/S y elimina los archivos temporales creados con tmpfile (3) es según la implementación. Por otro lado, _exit() no cerrar abrir descriptores de archivos ...
1.Salir(): es la limpieza de la obra como el cierre de descriptor de archivo, secuencia de archivo y así sucesivamente, 2._exit(): no es limpieza el trabajo como cerrar el descriptor de archivo, secuencia de archivos y así sucesivamente
Estas son la principal diferencia entre exit() y _exit().
am i rectificado ur respuesta
_exit cierra los descriptores de archivos. – adf88
No, el núcleo sí. _exit solo termina el proceso. La característica principal de _exit es que no hace más que decirle al kernel que finalice el proceso. –
Normativa en C99 son exit
y _Exit
.
La diferencia entre los dos es que exit
ejecuta también los controladores que pueden estar registradas con atexit
y cierra arroyos, etc., mientras que _Exit
no llama a las rutinas atexit
y corrientes pueden o pueden no cerrarse bien.
_exit
es de POSIX y tiene propiedades similares a _Exit
con la diferencia de que se garantiza que cerrará las transmisiones correctamente.
En resumen, siempre que pueda debe usar exit
, esta es la forma más limpia de terminar.
OK, pero ¿cuál es la diferencia entre la terminación completa y rápida⸮ – adf88
por favor elabore lo que se debe utilizar cuando. –
Llamar a 'exit()'. Los otros son detalles de implementación y, en general, no son tan útiles fuera de ciertas condiciones excepcionales cuando se crean marcos. – RBerteig