fix: resize через TIOCSWINSZ ioctl на TTY вместо kill -WINCH
SIGWINCH напрямую игнорируется. TIOCSWINSZ на TTY claude посылает SIGWINCH через kernel к foreground process group. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -40,9 +40,22 @@ echo "$next" > "$CURRENT_FILE"
|
|||||||
|
|
||||||
echo "Аккаунт: ${current:-?} -> ${next} (всего: ${#accounts[@]})" >&2
|
echo "Аккаунт: ${current:-?} -> ${next} (всего: ${#accounts[@]})" >&2
|
||||||
|
|
||||||
# Посылаем SIGWINCH процессу claude с задержкой в фоне (после отрисовки блокировки)
|
# Тригерим resize через TIOCSWINSZ на TTY claude (надёжнее чем kill -WINCH)
|
||||||
sh_pid=$PPID
|
sh_pid=$PPID
|
||||||
claude_pid=$(awk '/PPid/{print $2}' /proc/$sh_pid/status 2>/dev/null)
|
claude_pid=$(awk '/PPid/{print $2}' /proc/$sh_pid/status 2>/dev/null)
|
||||||
[ -n "$claude_pid" ] && ( sleep 0.3 && kill -WINCH "$claude_pid" 2>/dev/null ) &
|
if [ -n "$claude_pid" ]; then
|
||||||
|
tty_dev=$(ps -o tty= -p "$claude_pid" 2>/dev/null | tr -d ' ')
|
||||||
|
if [ -n "$tty_dev" ] && [ "$tty_dev" != "?" ]; then
|
||||||
|
( sleep 0.3 && python3 -c "
|
||||||
|
import fcntl, termios, struct, sys
|
||||||
|
try:
|
||||||
|
fd = open('/dev/$tty_dev', 'rb+', buffering=0)
|
||||||
|
ws = fcntl.ioctl(fd, termios.TIOCGWINSZ, bytes(8))
|
||||||
|
fcntl.ioctl(fd, termios.TIOCSWINSZ, ws)
|
||||||
|
fd.close()
|
||||||
|
except: pass
|
||||||
|
" ) &
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
exit 2
|
exit 2
|
||||||
|
|||||||
Reference in New Issue
Block a user