Not really.
Different process need different ways to terminate. Programs can intercept and handle signals sent to them, and they can choose to ignore them, or expect a given signal to be sent to one of them, that process will then use whatever ways it has setup to terminate other cooperating processes. The only way to know is to read its manual (man) pages and look how they handle signals and how are they are supposed to terminate. E.g. "man mlnet" directed me to
https://helpmanual.io/man1/mlnet. Yes, long reading, and not complete.
While most processes handle a 'kill' by terminating, others ignore it and require a kill -1, or a kill -2, or whatever. A kill -9 is "sure" kill, except if the processes has requested a kernel service that is blocked by some reason (mostly disk realted); in that case, you can't terminate the process, you see the process marked with a "D" state under top or ps.
Terminating a process using a kill -9 is dangerous. Imagine that the process is updating a database, and is killed during that transaction -- data will become corrupted. Imagine your bank account being updated, for a motivating enough example.
No, I don't know how mlnet works, neither how to tell it to terminate. It might be as simple as telling it to run in the background... on forks or old and not maintained programs, there are deviations on that. The above manual, e.g. says:
This manual page was written for the Debian GNU/Linux distribution because the original program does not have a manual page.
(...)
-daemon
this argument was removed, core will exit