ver terminar saber procesos proceso matar corriendo como comando c unix process

terminar - ¿Puedo matar un proceso desde sí mismo?



ver procesos en linux (6)

Intenta exit , mucho más simple, ¿por qué complicar las cosas?

Tengo algún código que se ejecuta cuando se detiene el proceso, ¿puedo llamar a kill(getpid()) para forzar la ejecución de este código (y cerrar el proceso obviamente)?


Puede usar kill (getpid (), SIGSPEC) para hacer esto correctamente para ejecutar el código que realmente está instalado como un controlador de señal para cualquier señal particular especificada por SIGSPEC.

Por supuesto, no puede capturar SIGKILL o SIGSTOP que no puedan tener manejadores. Todas las demás señales pueden tener controladores instalados usando el código de señal.

Si el código del manejador no es un manejador de señal sino un manejador atexit, solo será llamado a través de la llamada exit (). Tenga en cuenta que la llamada _exit () omite todos los controladores atexit.

También veo algunos comentarios aquí que parecen sugerir que kill (getpid (), SIGSPEC) es lo mismo que _exit () o exit () ¡NO ES! Son cosas diferentes.

Mi sugerencia sería leer exit (3) _exit (2) signal (7) signal (2) raise (3) sigaction (3) páginas de manual para una comprensión completa.


Puedes llamar a tu propio proceso usando matar a través de:

kill(getpid(),SIGINT);

Para más información echar un vistazo a this

Esto tendría un efecto similar al comando exit ().


Sí tu puedes. Incluso hay una función específica para él - raise(sig) - aunque kill(getpid(), sig) también funcionará.


Sospecho que hay un problema mayor con sus opciones de diseño.

Si desea ejecutar algún código cuando finaliza su proceso, registre el código con atexit .

Dicho esto, sí, puede enviar a su propio proceso una señal con kill(getpid(), sig) .


Un proceso puede matarse de la siguiente manera: kill (getpid (), SIGKILL);