Currently has some problems such as not killing jobs when (ctrl + c) and depends on an implementation of sigsuspend.