diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-29 09:51:11 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-10-01 00:12:16 -0300 |
| commit | ad3403adb72e3457eb76d6b3fc91cf8df3d738ae (patch) | |
| tree | 1669efb3e6891b3a32a71c1fcffe8dd48428d9b2 /docs | |
| parent | 6e2ed2e057ba95b3a86186c255d1965e1861bdf7 (diff) | |
| download | pardes-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.md | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -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 |
