For child processes, the wait()
and waitpid()
functions can be used to suspends execution of the current process until a child has exited. But this function can not be used for non-child processes.
Is there another function, which can wait for exit of any process ?
Nothing equivalent to wait()
. The usual practice is to poll using kill(pid, 0)
and looking for return value -1 and errno
of ESRCH
to indicate that the process is gone.
Update: Since linux kernel 5.3 there is a pidfd_open syscall, which creates an fd for a given pid, which can be polled to get notification when pid has exited.