Pregunta

Estoy buscando una manera sencilla y inalcanzable para terminar el puerto de Mac de mi aplicación C ++. En Windows yo estaba usando

TerminateProcess(GetCurrentProcess, 0);

¿Cuál es el comando equivalente que pueda usar con Mac OS X / XCode / GCC?

¿Fue útil?

Solución

En realidad desea _exit si usted quiere tener la misma semántica que TerminateProcess. semántica exit están más estrechamente alineados con ExitProcess.

Otros consejos

A más cerca de ProcessTerminate habrá enviar una SIGKILL con matar , tanto finalizar el proceso actual de inmediato y no puede ser atrapado. Este es el mismo que _exit

kill(getpid(), SIGKILL);

exit (0);


Tenga en cuenta que si bien se llama a exit () o TerminateProcess (), obtendrá que la aplicación termina inmediatamente, es decir, no hay llamadas de destructor, sin la limpieza se puede esperar ser hecho, hecho está (de OS supuesto limpia todo que puede).

En realidad, tanto la salida () y _exit () se refieren a la CRT, lo que significa diversas acciones aún están tomadas. (No estoy seguro de atexit, no he comprobado)

TerminateProcess en Windows está en el nivel de sistema operativo, por lo que deja de lado toda la CRT. Si desea hacer lo mismo en el Mac, lo mejor es conseguir sus manos sucias con funciones de mach. En este caso:

#include <mach/mach.h>

... // lots of your code here

task_terminate(mach_task_self());

Eso es lo más inalcanzable que se puede obtener.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top