Las señales son un mecanismo que incorporan los sistemas operativos basados en POSIX, que permiten notificar a un proceso la ocurrencia de un evento.
Para implementarlos en C, se utiliza signal.h . Cada señal es un número, pero comunmente se identifican mediante macros.
Ejemplos: SIGINT (señal 2), SIGKILL (señal 9), SIGSEGV (señal 11).
Es posible redefinir el handler de las señales para poder tomar comportamiento ante alguna de ellas.
wait() espera a que un hijo cambie de estado con un SIGCHLD.
Es importante usarlo para que no se desordenen los prints en la terminal en el output.
En linux se distinguen procesos con permisos privilegiados (toot) y no privilegiados.
Un proceso no root no puede enviar señales a procesos root.
Sin en bargo, linux puede permitir estos envíos de mensaje si al proceso se le dan ciertas capabilities.
strace permite ver todas las syscalls que usó ese programa.
Por ejemplo, strace -q echo hola > /dev/null