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

  • Как завершить графический интерфейс в SunOS из shell-script
  • Как удалить устройство из пула
  • Как получить GCC 4.7.1 с 64-разрядной поддержкой, установленной для моей учетной записи пользователя, только на Solaris x86
  • Solaris 11: Как использовать ILB для создания HA loadbalancer на двух серверных серверах?
  • Символы по глубине каталога
  • Как выключить или перезагрузить компьютер?
  • Как создать FS под SunOS?
  • Копирование файла в папку назначения перезаписывает каталог с файлом
  • 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 - лучшая ОС в мире.