繁体   English   中英

Linux C++,使应用程序打开终端并在其上运行

[英]Linux C++, make application open terminal and run on it

我正在一个基本的Hello World C++ 应用程序上对此进行测试。 由于只有从终端运行应用程序才能看到 std 输出,所以我想让应用程序自行打开其终端(通过双击它启动时),然后在其上执行其余代码。 我已经尝试过:

system("gnome-terminal");

就在main()函数的开头。 终端打开,但没有显示任何内容。 我想这是因为它是在另一个线程上打开的......? 那么还有其他方法吗?

两个问题:

  1. 您没有创建任何与终端通信的方法。 如果您需要双向通信,您可以创建两个管道,一个从您的程序到终端,一个从终端到您的程序。

  2. 您调用system的方式会导致您的程序等待gnome-terminal退出。 你需要在最后加上一个& 在实践中,您可能不想使用system 您需要在forkexec之间连接管道,因此您首先不应该使用system 那你就等不及了。

如果你想丑,你可以使用/proc/self/fd/X机制。 例如,理论上这可以工作:

system("gnome-terminal < /proc/self/fd/%d > /proc/self/fd/%d &",
    terminal_fd_in, terminal_fd_out);

只需确保描述符设置为在 exec 上关闭。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM