summaryrefslogtreecommitdiff
path: root/docs/fs.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-28 22:25:46 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:15 -0300
commit4073d1576876107e0750a51682a64319cf0c08c2 (patch)
treeb036d5393d862b988e9b88b3bee2f321100d4408 /docs/fs.md
parent33f62509fc515c767cbef8d329d7666697e54ae7 (diff)
downloadpardes-4073d1576876107e0750a51682a64319cf0c08c2.tar.gz
pardes-4073d1576876107e0750a51682a64319cf0c08c2.zip
Kill stops a command pane's whole line again, now it runs with job control
With the line run under job control (the change before), the job running has a group of its own, and Kill's SIGTERM to the tty's foreground group stopped only that job: of `sleep 30; touch x` the touch still ran. For a command pane the hosts now signal the shell's group as well, so the whole line stops, as it did; a line typed at a prompt still loses only its foreground job. The test forks a real pty for both halves: a background job outliving its command and the pty's hangup, and a killed line not running on. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Diffstat (limited to 'docs/fs.md')
-rw-r--r--docs/fs.md10
1 files changed, 6 insertions, 4 deletions
diff --git a/docs/fs.md b/docs/fs.md
index 90d5ad64..6419ecc6 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -134,16 +134,18 @@ never needed); and `Kill`, which
does not quit but stops commands, as acme's does: bare, every command pardes
started, and `Kill make ls`, those whose line begins with one of the words. A
command pardes started is a command pane's, until its child exits -- Kill
-sends its whole process group SIGTERM -- or a line it typed into a terminal (a
+sends SIGTERM to its running job and to its shell, so the whole line stops
+(of `sleep 30; echo done` the `echo` never runs) -- or a line it typed into
+a terminal (a
word written to `exec`, a middle click on one, a `pty/run`), from its shell's
start mark (C) to its end mark (D), where Kill sends its foreground job SIGTERM -- acme posts the
"kill" note, which ends a process -- and never signals the shell itself;
in a shell running without job control (`set +m`) the job shares the
shell's group, so there is none to signal: Kill says `Kill: no job to
signal`, and a write of it to `ctl` fails with that; with nothing running
-it says `Kill: nothing running`; and only the
-foreground job, so of `sleep 30; echo done` the `echo` still runs once the
-`sleep` is stopped --
+it says `Kill: nothing running`; and, of a typed line, only the
+foreground job, so of `sleep 30; echo done` typed at a prompt the `echo`
+still runs once the `sleep` is stopped --
and reads every setting there is, one a line, in the words a write of it
takes (`Verbose on`, `WindowOpacity 70`, `PanelSlide off`, `DumpDir` bare
for the default directory, `LocationsConfig ...`), so writing what it reads