[英]Linux C++, make application open terminal and run on it
我正在一个基本的Hello World C++ 应用程序上对此进行测试。 由于只有从终端运行应用程序才能看到 std 输出,所以我想让应用程序自行打开其终端(通过双击它启动时),然后在其上执行其余代码。 我已经尝试过:
system("gnome-terminal");
就在main()
函数的开头。 终端打开,但没有显示任何内容。 我想这是因为它是在另一个线程上打开的......? 那么还有其他方法吗?
两个问题:
您没有创建任何与终端通信的方法。 如果您需要双向通信,您可以创建两个管道,一个从您的程序到终端,一个从终端到您的程序。
您调用system
的方式会导致您的程序等待gnome-terminal
退出。 你需要在最后加上一个&
。 在实践中,您可能不想使用system
。 您需要在fork
和exec
之间连接管道,因此您首先不应该使用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.