Solaris 10, Shell Script, movimento do cursor [fechado]

0
#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 ( "3[s3[6;45H %s 3[u", asctime (timeinfo) );
}

int main()
{
        signal(SIGALRM, prtime);
        alarm(1);
        printf("continue instructions\n");
        while (1) {
                pause();
                printf("continue instructions\n");
        }
}

Eu apenas tento escrever o relógio em uma posição específica no terminal, mas quero salvar a posição do cursor antes de escrever o relógio e depois restaurá-la depois de escrever o relógio.

mas o 3[s & 3[u não funciona.

    
por MUE 22.02.2013 / 10:31

1 resposta

2

Você está usando os comandos CSI s e CSI u , que têm interpretações incompatíveis dependendo da implementação.

O primeiro pode ser "Salvar posição do cursor" ou "Redefinir emulador de terminal", sendo este último uma interface privada do Solaris.

Você deve usar uma biblioteca como ncurses para conseguir manuseio de tela portátil, mas se você ainda quiser codificar as seqüências de escape, isso pode fazer o que você espera:

printf ( "373[6;45H %s 38", asctime (timeinfo) );
    
por 22.02.2013 / 14:18