在Linux上使用C ++将终端连接到已创建的线程

时间:2012-10-05 10:07:22

标签: c++ linux multithreading terminal

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

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

将终端附加到创建的线程的任何简单方法?

2 个答案:

答案 0 :(得分:2)

也许有关于如何在Linux中使用管道的阅读

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

答案 1 :(得分:0)

在此问题中已部分回答:Avoid gnome-terminal close after script execution?

有一个很好的选择:

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

(2)在调用'tail'

之前创建日志文件(log.file)

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

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

(4)将内容附加到'log.file'以告诉'tail'显示它。