Posso usar o xterm para ler / gravar em um pts sem gerar outro processo (por exemplo, um shell)?

1

Eu tenho um processo que lê e grava em um pseudo-terminal. Eu gostaria de abrir o xterm e fazer com que ele abra um pseudo terminal e deixe-o aberto para que eu possa me comunicar com esse processo sem criar outro processo.

Agora eu uso o seguinte hack. Eu crio um programa trivial:

void main() {while(1);}

e depois abro-o numa janela xterm como esta:

xterm ~/a.out

Então eu posso escrever no outro processo e ler sua saída na janela xterm. Existe alguma maneira de fazer isso sem que o xterm tenha gerado algum processo inútil?

Edit: O processo com o qual estou tentando se comunicar é um sistema operacional que está sendo executado dentro do emulador Bochs. Eu estou tentando conectar a porta serial no sistema emulado com um pseudo-terminal no sistema host. Eu especifico o pseudo-terminal em particular no arquivo de configuração do Bochs assim:

com1: enabled=1, mode=term,dev=/dev/pts/4
    
por user31765 06.02.2013 / 16:27

1 resposta

1

Eu tenho medo de que você não possa - na verdade é o caminho recomendado na página bochsrc man. Se você está preocupado com o processo extra, você pode gerar isso em vez do seu loop trivial:

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

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

Você obterá o nome tty e o sleep() garantirá que você não perca tempo precioso do SPU em um loop ocupado trivial. Você também pode usar pause() em vez de sleep() .

Ou você pode corrigir o Xterm, é open-source depois de tudo.

    
por 06.02.2013 / 17:32