summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/fs.md8
1 files changed, 6 insertions, 2 deletions
diff --git a/docs/fs.md b/docs/fs.md
index 95c72baa..c3c42d0d 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -927,8 +927,12 @@ one line, three right-aligned fields and a newline: the pty's columns and
rows, then busy (0 or 1). `pty/ctl` takes `winsize C R`, `sig
INT|TERM|HUP|QUIT|KILL` and `exec`, which starts the pane's shell again in
its directory: one that is gone is refused before anything runs, `exec:
-<dir>: no such directory` (ENOENT), and a shell the host cannot start fails
-the write with why, as any builtin's failure does. A directory removed
+<dir>: no such directory` (ENOENT), and a shell the host cannot start (not
+there, not executable, a script whose interpreter is not there) fails the
+write with why -- `shell: shell not found`, ENOENT -- keeping the
+terminal; a `Tty` whose shell cannot start fails the same way and leaves
+no pane. The host knows before it answers: the child reports a failed exec
+through a close-on-exec pipe. A directory removed
under a running shell leaves the pane its name (never `... (deleted)`), so
an `exec` works there once the directory is back. The size, and `pty/ctl`'s `winsize` read back, is
what `winsize C R` last set (R of 1 is taken as 2: a one-row pty loses