process-terminate terminates the process process, which means killing it "nicely".
process-terminate invokes the Terminate Method of process, if it has one, otherwise it calls process-kill.
The terminate is set either by supplying one of local-terminator, remote-terminator or terminate-by-send in the call to process-run-function, or by a call to current-process-set-terminate-method on the process. See the entry for process-run-function for details.
If the process does not have a Terminate Method,
process-terminate calls process-kill.
If join-timeout is non-nil then it is the time in seconds to "join" the process, that is waiting for it to die. When join-timeout is non-nil, after invoking the Terminate Method or calling process-kill,
process-terminate calls process-join using join-timeout as the timeout, and returns the result.
process-terminate returns the result of process-join if join-timeout is non-nil, otherwise it returns 0.
process-terminateis the appropriate way to kill processes, because it gives the process the option to decide when to exit. process-kill kills the process whenever it is not blocking interrupts, which may still be sensitive in some sense.
process-terminateand then process-kill, so processes that exit with
process-terminatehave the chance to clean up as needed.
process-terminateis better than process-kill only when the process has a Terminate Method. When the process does not have a Terminate Method,
process-terminatecan cause the other to exit in the middle of some sensitive piece of code.
LispWorks User Guide and Reference Manual - 20 Sep 2017