Hello, xterm has an annoying delay when it's being close by the window manager when child processes exist.
Test 1: xterm -e "sh" Now hit the "X" button or whatever your window manager provides to send a window delete event. Xterm should close almost instantly. Test 2: xterm -e "sh -c sh" You can execute this, or just open xterm and open another shell inside. Now close it again. In this situation it takes about 1 second to close. Window deletion triggers do_hangup(), which invokes a kill(-pid, SIGHUP) and then waits around one second before it quits. I couldn't figure out what it does in this time. But ktrace hints that it ran into a Sleep() statement because the delay is right after a select and fd_set, which is only called in Sleep(). I looked and the xterm menu Quit function and found that it does something slightly different than than window delete. It also sends kill(-pid,SIGHUP), but then immediately exits. Handle_send_signal and Cleanup are doing the same thing, except Cleanup calls exit right afterwards. My naive assumtion is, that this would also be the right behavior on window deletion. Index: app/xterm/menu.c =================================================================== RCS file: /cvs/xenocara/app/xterm/menu.c,v retrieving revision 1.30 diff -u -p -u -p -r1.30 menu.c --- app/xterm/menu.c 20 Jan 2020 21:03:35 -0000 1.30 +++ app/xterm/menu.c 8 Nov 2020 15:49:08 -0000 @@ -1422,7 +1422,7 @@ do_hangup(Widget gw, XtPointer closure GCC_UNUSED, XtPointer data GCC_UNUSED) { - handle_send_signal(gw, SIGHUP); + Cleanup(SIGHUP); } /* ARGSUSED */