Solaris 10, Shell Script, перемещение курсора

#include <signal.h> #include <unistd.h> #include <stdio.h> #include <sys/types.h> #include <time.h> void prtime() { time_t rawtime; struct tm * timeinfo; char *s; signal(SIGALRM, prtime); time ( &rawtime ); timeinfo = localtime ( &rawtime ); alarm (1) ; //printf("Time\n"); printf ( "\033[s\033[6;45H %s \033[u", asctime (timeinfo) ); } int main() { signal(SIGALRM, prtime); alarm(1); printf("continue instructions\n"); while (1) { pause(); printf("continue instructions\n"); } } 

Я просто пытаюсь записать часы в определенной позиции в терминале, но я хочу сохранить позицию курсора перед записью часов, а затем восстановить эту позицию после записи часов.

но \033[s & \033[u не работает.

One Solution collect form web for “Solaris 10, Shell Script, перемещение курсора”

Вы используете команды CSI s и CSI u которые имеют несовместимые интерпретации в зависимости от реализации.

Первым может быть либо «Сохранить позицию курсора», либо «Сбросить эмулятор терминала», последний из которых является частным интерфейсом Solaris.

Вы должны использовать библиотеку, например ncurses, для обеспечения портативной обработки экрана, но если вы все еще хотите жестко кодировать escape-последовательности, это может сделать то, что вы ожидаете:

 printf ( "\0337\033[6;45H %s \0338", asctime (timeinfo) ); 
  • Как выполнять команды в пакетном режиме по ssh?
  • Присвоение переменной «awk» или «nawk» переменной в скрипте оболочки
  • Solaris 11: как получить свойства pkg в машиночитаемом формате
  • Solaris 11 и vim F вместо конца
  • Как безопасно выполнить приведенные ниже изменения сетевых параметров в Solaris 10?
  • Как я могу просмотреть содержимое файла tar.gz (filenames + filesize)
  • bc ведет себя по-разному на Solaris и Linux
  • Изменить системный язык Solaris 8
  • egrep не работает должным образом в системе SunOS
  • Кронтаб связан с производительностью сервера?
  • Список всех открытых файлов .log 'в * nix
  • Linux и Unix - лучшая ОС в мире.