是否可以在C中打开一个带有线程的新Linux终端?

前端之家收集整理的这篇文章主要介绍了是否可以在C中打开一个带有线程的新Linux终端?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
似乎有很多关于SO的问题很接近,但并不是我正在寻找的.我试图看看是否有办法打开一个新的终端窗口( Linux),从我的主程序中使用线程/子进程,并让该线程/子进程拥有新窗口.

只是对完整目标的概述:我将有一个我将启动的主程序,并将通过stdin获取输入,如果我选择输入“启动帮助器”它将产生一个新的终端窗口,它本身可以与之交互用户(stdin / stdout).

所以我想做的是让主程序调用线程,让线程使用/拥有新的终端窗口,然后当线程消失并死亡时关闭该窗口.

我知道这段代码不能正常工作,但从概念上讲,我喜欢这样的东西:

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代码,所以没有shell脚本,除非该脚本可以从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");

手柄打开正确,但终端中没有显示任何内容.

解决方法

gnome-terminal和xterm都允许您在终端打开后运行任意命令.

因此,我建议您编写一个帮助程序,该程序知道如何与主程序通信(通过套接字,命名管道或其他一些IPC机制).你的线程产生终端程序,传递你的帮助程序,它将在终端内运行,并通过上述IPC通道与线程通信.

猜你在找的C&C++相关文章