Solaris 10, 쉘 스크립팅, 커서 이동 [닫기]

Solaris 10, 쉘 스크립팅, 커서 이동 [닫기]
#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작동하지 않습니다.

답변1

사용 중인 명령은 구현 CSI s에 따라 CSI u호환되지 않는 해석을 갖습니다 .

첫 번째는 커서 위치 저장 또는 터미널 에뮬레이터 재설정일 수 있으며, 후자는 Solaris 전용 인터페이스입니다.

휴대용 화면 처리를 위해 ncurses와 같은 라이브러리를 사용해야 하지만 여전히 이스케이프 시퀀스를 하드코딩하려는 경우 예상대로 작동할 수 있습니다.

printf ( "\0337\033[6;45H %s \0338", asctime (timeinfo) );

관련 정보