다른 프로세스(예: 쉘)를 생성하지 않고 xterm을 사용하여 pt를 읽고 쓸 수 있습니까?

다른 프로세스(예: 쉘)를 생성하지 않고 xterm을 사용하여 pt를 읽고 쓸 수 있습니까?

의사 터미널을 읽고 쓰는 프로세스가 있습니다. 나는 xterm을 열고 의사 터미널을 열어서 다른 프로세스를 만들지 않고도 이 프로세스와 통신할 수 있도록 열어두기를 원합니다.

이제 다음 기술을 사용합니다. 저는 간단한 프로그램을 만들었습니다.

void main() {while(1);}

그런 다음 다음과 같이 xterm 창에서 엽니다.

xterm ~/a.out

그런 다음 다른 프로세스에 쓰고 xterm 창에서 해당 출력을 읽을 수 있습니다. xterm이 쓸모없는 프로세스를 생성하지 않고 이를 수행할 수 있는 방법이 있습니까?

편집: 제가 통신하려는 프로세스는 Bochs 에뮬레이터 내에서 실행되는 운영 체제입니다. 에뮬레이트된 시스템의 직렬 포트를 호스트 시스템의 의사 터미널에 연결하려고 합니다. 다음과 같이 Bochs 구성 파일에 특정 의사 터미널을 지정합니다.

com1: enabled=1, mode=term,dev=/dev/pts/4

답변1

유감스럽게도 그렇게 할 수 없습니다. 이것은 실제로 bochsrc매뉴얼 페이지에서 권장되는 방법입니다. 추가 프로세스가 걱정된다면 간단한 루프 대신 생성할 수 있습니다.

#include <stdio.h>
#include <unistd.h>

int main(void)
{
    printf("tty:  %s\n", ttyname(0));
    while (1)
        sleep(60);
    return 0;
}

tty 이름을 얻을 수 있으며 sleep()사소한 바쁜 루프에서 귀중한 SPU 시간을 낭비하지 않는지 확인할 수 있습니다. pause()대신 사용할 수도 있습니다 sleep().

아니면 결국 오픈 소스인 Xterm을 패치할 수도 있습니다.

관련 정보