summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-29 09:51:11 -0300
committerGabriel Schneider <[email protected]>2026-10-01 00:12:16 -0300
commitad3403adb72e3457eb76d6b3fc91cf8df3d738ae (patch)
tree1669efb3e6891b3a32a71c1fcffe8dd48428d9b2 /docs
parent6e2ed2e057ba95b3a86186c255d1965e1861bdf7 (diff)
downloadpardes-ad3403adb72e3457eb76d6b3fc91cf8df3d738ae.tar.gz
pardes-ad3403adb72e3457eb76d6b3fc91cf8df3d738ae.zip
A shell that cannot start fails Tty and pty/ctl exec with why, before either answers
A shell whose exec failed (a script's missing interpreter) was reported started: Tty and pty/ctl exec succeeded, then the pane died. The child now reports a failed chdir or exec through a close-on-exec pipe the parent reads before acknowledging the shell; the host's spawn fails with the reason (`shell not found`, ENOENT), which fails the waiting write. A Tty whose first shell never ran leaves no pane; a terminal restarted by pty/ctl exec keeps its pane. Co-Authored-By: Claude Opus 5.5 <[email protected]>
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