Tanto quanto eu sei, não há métodos shell para fazer o que você está tentando, isso terá que ser feito a partir de um programa personalizado.
Use ptrace()
para monitorar o processo, da mesma forma que um depurador faz. Quando o processo receber um sinal, ele será interrompido e o programa de monitoramento será notificado (sua chamada para wait()
retornará e WIFSTOPPED(status)
será verdadeira).
Em seguida, ele pode executar lsof -p <pid>
para listar os arquivos abertos do processo e, em seguida, chamar ptrace(PTRACE_CONT, pid, NULL, 0)
para reiniciar o processo.