의사 터미널을 읽고 쓰는 프로세스가 있습니다. 나는 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을 패치할 수도 있습니다.