And as always with this meme: Both Windows and Linux can ask a process nicely to terminate or kill it outright. And the default for both is to ask nicely.
on windows a process can get in a state so that it is impossible to make it go away, even with process explorer or process hacker. mostly this also involves the bugged software becoming unusable.
I encounter such a situation from time to time. one way it could happen is if the USB controller has got in an invalid state, which one of my pendrives can semi-reliably reproduce. when that happens, any process attempting to deal with that device or its FS, even the built-in program to remove the drive letter, will stop working and hang as an unkillable process.
Linux has that issue too. A process in an uninterruptible blocking syscall stays until that syscall finishes, which can be never if something weird's going on.
oh yeah now that you say, SMB/CIFS mounted share if connection is no more. when I experienced this, it was temporary though, because there's a timeout which is half (or double?) of the configurable reconnection timeout. but now that I think of it, I'm not sure if it made it unkillable.
Add a -f to your umount and you can clear up those blocked processes. Sometimes you need to do it multiple times (seems like it maybe only unblocks one stuck process at a time).
When you mount your NFS share you can add the "soft" option which will let those stuck calls timeout on their own.
Because that's better for the software, Linux however kills it outright when it doesn't respond at all. Windows just... Waits. And you can't really hardkill the processes from the task manager. Or at last my last knowledge is that.
League of Legends captures and discards the ALT-F4 keystroke combination.
Microsoft trusts app developers to use Microsoft's standards (such as terminating the process when a close message is received) and they shouldn't. App developers like Riot have taken advantage of this trust and tuned their apps to act differently than expected, and include code which makes the app minimize to the system tray instead, or force the user to answer questions ("Are you SURE you want to close?"), or do nothing at all.
Linux programs can also capture signal calls. They usually only capture sigints so that they can close gracefully, but theoretically you could also capture a sigkill.
You can easily make a program unkillable (or to be more precise untermable) on Linux. Here's a simple bash script that will do that.
#!/bin/bash function finish {
while true
do
echo "Can't kill me."
sleep 10
done
} trap finish EXIT
trap finish TERM
trap finish INT
while true
do
echo "Still alive."
sleep 10
done
Hitting the X in Windows and hitting the X in Linux both cause the application to start a save yourself routine. From the OS standpoint they're not far off.
The problem is we have a lot of confirmation bias in windows because every time we want to close an application that's not working, that save yourself call has to sit around for a hellaciously long time out followed by a telemetry call so that Microsoft can track that it happened.
It's pretty rare that Linux apps don't just close.