|There's more than one way to do things|
You don't know whether the child or the parent will run first after a fork. You test code could print
This is the original process the pid = 5292 This is the return to the parent process This is the child process.. parentpid = 5292 This is the child process its pid = 5293next time.
If the issue is unexpected death of the parent, it would be good to show the parent's code. You may be running off the end of the file to end naturally.
In any case, the child appears to loop, running once every hour and a half or more for as long as the parent is running. That loop might be more clearly written as:
instead of parsing ps output and applying a double negative condition to exit.
I have no idea whether your main processing is appropriate or not, since you don't say what is run by $BPDBJOBS or what data it gives back. The match and assignment to $1 sequences look a little awkward, but may be all right.
Your trial code is apt to be littering the machine with zombies, might want to check that