【问题标题】:How to invoke another terminal for output programmatically in C in Linux如何在 Linux 中的 C 中以编程方式调用另一个终端进行输出
【发布时间】:2011-03-27 14:46:37
【问题描述】:

我对 Unix 环境有点陌生。

我想要一个小聊天程序,初始终端用于输入,并调用另一个终端进行输出。我一直在网上搜索,但没有任何运气。


好的,更具体地说,我正在用 C 语言在 Mac 上通过 TCP/IP 编写一个聊天程序。我想在两个不同的终端中分离输入和聊天消息输出。我可以找到有关如何在进程之间进行通信的资源,但我不知道如何调用另一个终端进行输出。

【问题讨论】:

  • 我认为如果您想对您的问题获得有意义的答案,您需要更加具体。例如,您可以询问如何调用另一个终端,提供有关您正在使用的桌面环境(KDE、Gnome 等)和终端程序的详细信息。或者您可以询问您可以使用哪些方法来允许两个终端相互通信。 (FIFO 管道、TCP/IP 套接字、UNIX 套接字、共享内存等)或者您可以选择其中之一并询问在哪里可以找到资源来展示如何使用它。首先弄清楚你需要知道什么,然后编辑这个问题来反映它。

标签: c linux unix


【解决方案1】:

以您似乎正在做的方式生成另一个终端是相当不寻常的。更简洁的方法是使用文件(或命名管道)从您的聊天程序接收输出,然后在另一个终端上运行tail -f(或另一个程序以正确格式化输出)以显示其内容。第一个终端将用于输入(可能来自stdin),第二个终端将接收tail 的输出。

一个示例命令行用法是:

  1. 运行聊天客户端,将任何输出发送到名为“输出”的文件:

    $ ./client [parameters] > output
    
  2. 在另一个终端中,通过读取这个文件来显示输出:

    $ tail -f output
    

请记住,您的聊天程序应该能够同时处理两个不同的输入源(来自服务器和来自用户的传入消息),可能使用select()

【讨论】:

  • 这似乎是一个可行的解决方案。谢谢
猜你喜欢
  • 2016-04-08
  • 2015-01-09
  • 2016-04-19
  • 2019-02-24
  • 2022-10-14
  • 1970-01-01
  • 2013-06-05
  • 2013-05-09
  • 2013-12-29
相关资源
最近更新 更多