Bueno por si le sirve a alguien en algun momento me contestare a mi mismo...
La verdad al final resulto mas sencillo de lo que yo creia y como en casi todas estas cosas son tonterias de las que no te das cuenta en mucho tiempo. Bueno entrando en lo que importa.
Nada mas entrar en el main tienes que capturar la señal SIGINT e ignorarla directamente con el siguiente codigo:
struct sigaction sig;
sig.sa_handler=SIG_IGN;
sig.sa_flags=0;
sigemptyset(&sig.sa_mask);
sigaction(SIGINT, &sig, NULL);
Una vez hecho esto como los procesos hijos se crean mediante un fork debemos volver a colocar la accion a la señal como estaba para ello empleamos el siguiente codigo:
sig.sa_handler=SIG_DFL;
sig.sa_flags=0;
sigemptyset(&sig.sa_mask);
sigaction(SIGINT, &sig, NULL);
Este último trozo de codigo se debe de colocar la parte que ejecuta unicamente el proceso hijo, si no al padre le volveria a afectar el Ctrl+C
Espero que le pueda servir a alguien