En MacOS, ps
se basa aproximadamente en el libtop.c
biblioteca cuyo fuente contiene la siguiente función (truncada por espacios en blanco):
/* Return a pointer to a string representation of a process state. */
const char * libtop_state_str(uint32_t state) {
const char *strings[] = {
"zombie",
#define LIBTOP_STATE_ZOMBIE 0
"running",
#define LIBTOP_STATE_RUN 1
"stuck",
#define LIBTOP_STATE_STUCK 2
"sleeping",
#define LIBTOP_STATE_SLEEP 3
"idle",
#define LIBTOP_STATE_IDLE 4
"stopped",
#define LIBTOP_STATE_STOP 5
"halted",
#define LIBTOP_STATE_HALT 6
"unknown"
#define LIBTOP_STATE_UNKNOWN 7
};
assert(LIBTOP_NSTATES == sizeof(strings) / sizeof(char *));
assert(state <= LIBTOP_STATE_MAX);
assert(LIBTOP_STATE_MAXLEN >= 8); /* "sleeping" */
return strings[state];
}
Como se ha señalado correctamente en otra respuesta, ps
's print.c
toma los símbolos de estado del proceso de tasks.c
donde coinciden directamente con los desplazamientos de estado encontrados en libtop.c
como se muestra arriba.
La última es desconocida, lo que significa que el estado del proceso no entra en ninguna categoría concreta. Y el último símbolo es un signo de interrogación, por lo que en raras ocasiones puede que lo veas en la etiqueta STAT
columna.