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

  • Восстановление открытого файла
  • OracleSolaris 11.2 - удалить каталог, который является точкой монтирования
  • Solaris - Наследование файлами права собственности пользователя на каталог
  • Есть ли удобный инструмент командной строки для управления заданиями Cron?
  • solaris + fit egrep для solaris
  • Как использовать grep для поиска текстовой строки в файлах в подпапках родительской папки без ключа -r
  • Почему результат grep зависит от пути к папке?
  • Как сравнить два числа
  • 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 - лучшая ОС в мире.