当前位置: 首页 > 面试题库 >

如何在Linux中的C中以编程方式调用另一个终端以进行输出

汪飞捷
2023-03-14
问题内容

我是Unix环境的新手。

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

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


问题答案:

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

命令行用法示例为:

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

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

    $ tail -f output
    

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



 类似资料:
  • 问题内容: 我尝试了google,但是发现它获取了 当前 进程的父pid 。 我需要类似的东西,有这样的东西吗?基本上获取某些进程的pid,然后返回父进程的pid。 问题答案: 我认为最简单的方法是打开“ / proc”并解析内容。 您将找到ppid作为/ proc / pid / stat的第四个参数

  • 我试图实现一个非常简单的用例,一个UI特性,其中: null 这些建议和类似的建议都不起作用。我也试着愚弄一下反应,看看我能不能做点什么!我使用了真实的DOM: 而且也没用。我甚至无法理解的一件事是这样的建议:将ref作为一个方法(我“猜测”),我甚至没有尝试它,因为我有很多这样的组件,我需要ref来进一步获得每个组件的值,我无法想象如果我的ref没有命名,我如何获得的值! 所以你能给出一个想法,

  • 问题内容: 启动应用程序时,未选择任何行。但我想表明第一行已被选中。 这该怎么做?我是否需要设置行的颜色? 更新:我尝试了table.setRowSelectionInterval(0,0)。我知道它应该可以工作,但是有一条错误消息: 问题答案: 您可以调用setRowSelectionInterval来做到这一点: 选择第一行。

  • 问题内容: 我已经看到这个问题问过其他平台/语言-有什么想法吗?我想做类似的事情: 我希望能够在调试时切换键盘输入作为脚本的开始,这样我就可以花点时间启动chrome来监听我的节点检查器端口。 ***快速更新-我猜我实际上可以使用“ process.argv”来检测–debug是否传入。这是最佳/正确的方法吗? 问题答案: 在调试模式下运行时,NodeJS创建一个全局对象: 因此,可能的解决方案是

  • 问题内容: 作为单元测试的一部分,我想调用限于错误信号部分的pylint检查器。因此我检查了pylint可执行脚本,进入了helper类,在那里我迷失了一个很长的函数,最后以调用。 有人尝试过并设法这样做吗? 梦想计划是这样的: 有什么提示吗?除了“复制方法并跳过”之外,我的意思是? 我并不 需要 通过运行测试,它也可能是或其他软件:随时提出替代方案。谢谢! 问题答案: 看一下,其中包含以编程方式

  • 问题内容: 我想在我的C ++应用程序中的特定位置强制进行核心转储。 我知道我可以通过执行以下操作来做到这一点: 但是我想知道是否有更清洁的方法? 我正在使用Linux。 问题答案: 提高信号号6(在Linux中)是一种方法(尽管请记住,并非所有POSIX实现中SIGABRT都 必须 为6,因此,如果不是quick’n,则可能需要使用值本身’脏调试代码)。 调用也会导致核心转储,你甚至可以做到这一