LINUX.ORG.RU

Хочу что-то вроде screen или tmux, но не их


0

1

Программа должна иметь всего две функции: отцепить сессию и прицепить. Никакого мультиплексирования не нужно.

Самое главное, чтобы никакой ncurses не делал ничего плохого или по мнению программы хорошего с терминалом. Всё должно работать ровно так, как работает при прямой работе или при работе по ssh.

При отцеплении можно сохранять вывод в буфер, но, если в /dev/null, то, в принципе, тоже ничего страшного.

В принципе, такую вещь и написать можно, но ведь 100%, что она уже написана.

★★★

Ответ на: комментарий от GotF

>retty

Вроде, конечно, выглядит, как то, что нужно, хотя платформозависимая жесть на ассемблере — это, конечно... Она ещё и не очень работает у меня.

Yareg ★★★
() автор топика
Ответ на: комментарий от GotF

disown

О да, хвала богам, я знал, что нечто подобное должно быть.

baverman ★★★
()
Ответ на: комментарий от mydoom

Абсолютно то, что нужно.

Только один какой-то, непонятно, баг-не баг: если в одном терминале создать сессию, в ней открыть vim, отцепить и подцепить в соседнем терминале, то после выхода терминал не перерисовывается и остаются висеть знаки ~. Хотя нет, последовательность действий какая-то не такая, сейчас не могу воспроизвести.

Yareg ★★★
() автор топика
Ответ на: комментарий от Yareg

Вывод сложно сохранять не в /dev/null, не реализовывая эмулятор терминала. Ибо ncurses и гигабайтная история.

x3al ★★★★★
()
Ответ на: комментарий от x3al

А ещё мне не нравится вот это его поведение:

attach.c:
189 	/* Clear the screen. This assumes VT100. */
190 	write(1, "\33[H\33[J", 6);
Yareg ★★★
() автор топика
Ответ на: комментарий от Yareg

>Можно историю, в принципе, самому сохранять, с помощью tee.

И как ты будешь её читать? Любое приложение с *curses закинет в неё тонну мусора, который ко всему прочему ещё и нельзя разрывать (т.е. нельзя читать историю с произвольной точки).

x3al ★★★★★
()
Ответ на: комментарий от x3al

Если моё приложение вовсе не на ncurses, то я использую такой скрипт

#!/bin/sh
cat "$1.log" 2>/dev/null
dtach -A /tmp/$RANDOM -z -r winch sh -c "$1 2>&1 | tee $1.log; rm $1.log"
Yareg ★★★
() автор топика
Ответ на: комментарий от Yareg

>$RANDOM

Ну, то есть, естественно, не $RANDOM, а например $1.socket

Yareg ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.