ok i see you all did your homework and you know what is a standard approach. but that is not what i am looking for. so the whole project is a grid-wide and net-wide portable system. and i see that the time thing confused you . so let say that instead of time a user from a xy machine logs in and starts from main an application , but he doesn't want to wait for it to finish. plus this application is started on a computer on the other side of the globe(which is exactly what the app is doing). but then he decides to start 30 more applications on 30 different computers over the globe. and he doesn't want to wait for them to finish. but then a user get scared form some reason and decides to leave the main application. then it would be convenient to cover all his tracks so that all the pid's get terminated. that is why i was mentioning forks, exec and background jobs ,because it works in 90 percent of the time , but sometimes the forked and detached process stays detached when the main program is finished. i believe it is a bug in forking which is depended on OS (LINUX ONLY) so i'm looking for an advice