You may want to check list-processes:
list-processes is an interactive compiled Lisp function in
‘simple.el’.
(list-processes &optional QUERY-ONLY BUFFER)
Display a list of all processes that are Emacs sub-processes.
If optional argument QUERY-ONLY is non-nil, only processes with
the query-on-exit flag set are listed.
Any process listed as exited or signaled is actually eliminated
after the listing is made.
Optional argument BUFFER specifies a buffer to use, instead of
"*Process List*".
The return value is always nil.
This function lists only processes that were launched by Emacs. To
see other processes running on the system, use ‘list-system-processes’.
It seems to miss a lot of features you need, but with a bit coding you may get the desired results (if you do so, please send your patches upstream, I’d occasionally like to see this feature in Emacs.) That said, I couldn’t find any better ready-made candidates to your problem.