他のプロセス(シェルなど)を作成せずに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をパッチすることもできます。

関連情報