in reply to how can we tell when a background process is finished?

Perhaps you could explain what you are trying to do. For example, if you just need to wait for a program to finish, why place it in the background to begin with? A simple system("program"); would suffice. That way you always know when the program has finished because system will return.

-- vek --