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

如何在带有C的Linux中使用伪终端?

卫昊东
2023-03-14
问题内容

我试图弄清楚如何在Linux中使用伪终端,实际上我想创建一个telnetd克隆,这是我在前面的问题中提到的。

我了解主终端和从终端的概念,并且对如何在C中使用syscall有基本的了解。

我的问题与打开从属/主文件描述符后的下一步有关。如何在奴隶中发射盖蒂?网上是否有 足够的 资源来使用forkpty(),openpty()或其他API?

C语言中的一些示例会有所帮助。这是一个非常相似的问题,但是没有人提供任何示例。


问题答案:

Unix环境中的高级编程,第2版在Linux中可用的伪终端层上有出色的一章。最好的部分是包含驱动程序的源代码,pty并且非常清楚地演示了如何使用pty接口。(pty如果您想以编程方式驱动仅终端程序,但又不想使用,则它所构建的程序本身就很有用expect(1)。)



 类似资料:
  • 问题内容: 从串行设备(/ dev / ttyXX)读取多个进程可以使两个进程无法获取所有数据- 数据将以某种方式在它们之间分配。我想编写一个程序,该程序从串行设备读取,创建几个主/从pty对,然后允许从串行设备读取的程序改为从pty读取,以便所有读取过程都接收数据从串行设备中读取数据,让pty像串行设备一样,从它们开始从pty读取数据时,它们只会获得最新数据。换句话说,在开始读取之前,您将不会获

  • 问题内容: 好的,我一直在研究如何执行此操作,但是说我正在运行一个程序,该程序在终端上有很多输出,如何清除程序中的屏幕以使程序保持运行状态? 我知道我可以只输入终端,然后将其清除就可以了,但是就像我说的那样,对于这个程序,这对我来说会更有利。 我找到了可行的方法,但是我不确定它是什么或正在做什么。 那行得通,但是我不知道它是什么,如果您能解释一下,我将不胜感激。 问题答案: 这些是ANSI转义码。

  • 我想在没有客户端loadbalancer Ribbon的情况下使用Feign,因为我不想运行Eureka,它需要分布式和高可用性。相反,由Route53管理的内部DNS名称的内部ELB就可以了。 提供纯URL到总是导致,所以我试图阻止菲恩使用Ribbon: Spring Cloud Netflix附带了,如果存在中的,就可以使用它。但是,如果排除了此依赖项,则会破坏: 想法欢迎:-)

  • 我使用这个代码: 定义: 我用命令构建它:,结果是: 警告:在“void*memcpy(void*,const void*,size_t)”调用中“大小”的参数与目标的指针类型“双*”相同;预期的“双倍”或显式长度 [-Wsizeof-指针-内存] 我不明白它是什么。你能告诉我如何使它正确工作吗?

  • 问题内容: 我想使用系统蜂鸣器(并且只有在没有蜂鸣器/无法访问蜂鸣器时才使用扬声器)生成具有特定频率和长度(针对不同的声音信号)的蜂鸣声。我知道可以通过使用ioctl来做到这一点,但这需要root访问权限,而这是我所不希望的。 我知道我可以只使用“ beep”命令,但这将是一个依赖关系,如果可能的话,不应使用它(根本没有外部依赖关系,只有基本的linux库和C)。 我目前拥有的是以下代码(但这需要

  • 问题内容: 我在尝试着: 与处理器固定同时运行16个副本(每个内核2个副本) 在某些功能说功能1完成后,与处理器固定同时运行8个副本(每个内核2个副本),并将处理器内核翻转到最远的内核。 我面临的问题是如何选择最远的处理器。 一些朋友建议使用sched_getaffinity和sched_setaffinity,但我认为找不到任何好的示例。 问题答案: 要使用sched_setaffinity使当