SO については多くの質問があるようですが、私が探しているものではありません。メインプログラムからスレッド/子プロセスを使用して新しいターミナルウィンドウ(Linux)を開き、そのスレッド/子プロセスに新しいウィンドウを所有させる方法があるかどうかを確認しようとしています。
完全な目的の概要: 起動するメイン プログラムを用意しstdin
、 を介して入力を受け取ります。入力を選択して「ヘルパーを開始」すると、それ自体が対話できる新しいターミナル ウィンドウが生成されます。ユーザー (標準入力/標準出力)。
だから私がしたいのは、メインプログラムにスレッドを呼び出しさせ、スレッドに新しい端末ウィンドウを使用/所有させ、スレッドが消えて死ぬときにそのウィンドウを閉じることです。
このコードが正しく機能しないことはわかっていますが、概念的には、次のようなものが必要です。
void * Runit()
{
system("gnome-terminal"); //Would like to get a handle to this window
while(1)
printf("I'm the thread!!!\n"); //Would like to get this printed to the new window
}
int main()
{
pthread_t child;
pthread_create(&child, NULL, Runit, NULL);
sleep(10);
return 0; //Would like the child & its window to go away now.
}
これに関する要件は緩いです。移植可能である必要はありません。これは、私の生活を楽にするための小さな Linux ツールです。Cコードである必要があるため、そのスクリプトをCから実行できない限り、シェルスクリプトはありません。ヘルプやその他のアイデアも大歓迎です。
編集:
Linux端末にはファイルハンドルがあることを認識しており、/dev/pts/x
次のようなコードを試しました:
system("gnome-terminal");
sleep(2); //let the file handle show up in /dev/pts
fp = fopen("/dev/pts/<new file handler number>");
fprintf(fp, "echo hi");
ハンドルは正しく開きますが、ターミナルには何も表示されません。