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 не работает.

  • Suse-эквивалент Solaris ls -V
  • как получить информацию о файлах каталога
  • Невозможно смонтировать разделы / разделы, не распознанные в Solaris 11.1
  • Поиск пустых каталогов рекурсивно
  • Обновление Solaris 11.3 - изменения в rpool после обновления после перезапуска
  • Как сопоставить шаблон, удалить шаблон, а также следующую и предыдущую строку в Solaris 10
  • Нет разрешения на создание подкаталога, когда пользователь принадлежит группе каталогов
  • Алгоритм распределения ZFS
  • 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) ); 
    Linux и Unix - лучшая ОС в мире.