将终端附加到创建的线程,在 Linux 上C++

Attach a terminal to created thread, in C++ on Linux

本文关键字:Linux C++ 线程 终端 创建      更新时间:2023-10-16

我正在C++开发一个聊天服务器。该程序是从终端构建和运行的。在终端中运行时,我可以使用" printf "正常写入此终端。写入此终端的一些信息是新传入连接、传出连接等的警报。

现在我需要获取键盘输入,以便管理员可以键入命令以查看聊天服务器中的变量值。我打算创建一个新线程并向其附加一个新终端。建议调用 system("gnome-terminal"),但它需要一点延迟 sleep() ,似乎不是一个好的选择,因为重定向到这个 gnome-terminal 的所有内容都将被视为 bash 命令。而且我不知道如何将"system"命令打开的终端连接到线程。

有什么简单的方法可以将终端附加到创建的线程上吗?

也许可以阅读一下如何在 Linux 中使用管道

http://linuxprograms.wordpress.com/tag/pipes/

正如这个问题中的部分答案:避免在脚本执行后关闭 gnome-terminal?

有一个不错的选择,如下所示:

(1) 使用主端子进行正常输入/输出。

(2) 在调用"tail"之前创建日志文件(log.file)

(3) 使用"tail"命令显示日志内容(日志文件)

//c++ code
system("gnome-terminal -e "bash -c 'tail -f log.file'"");

(4)将内容附加到"log.file"中,以告诉"尾巴"显示它。