问题标签 [tty]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1998 浏览

c - 如何从 tty 强制输入

我想编写一个程序,它只从 tty 读取用户输入,而不是像passwdssh那样重定向标准输入管道。有什么办法吗?

非常感谢

0 投票
5 回答
7267 浏览

linux - 如何判断是在 linux 控制台还是在 ssh 会话中运行?

如果直接从 linux 控制台运行,我有一个应用程序需要表现不同。因此,如果用户使用 SSH 连接来运行 FooBar,或者用户走到控制台并直接登录以运行 FooBar,我希望它做一些不同的事情。

我需要调用什么 C API 来区分这两种情况?我在想我必须查看“tty/pts”信息(例如我在运行“ps axf”时看到的信息),但我不确定这是否是最佳解决方案,也不确定要调用什么 API获取该信息。

提示赞赏。:)

0 投票
5 回答
5073 浏览

c - Linux 串口的正确初始化顺序

我编写了一个必须在 Linux 上使用串行端口的应用程序,尤其是 ttyUSB 的。读取和写入操作是使用标准的 select()/read() 循环和 write() 执行的,它们可能没有任何问题,但初始化代码(或其中某些部分的缺失)会损坏 tty 子系统中的某些内容。这里是:

另一个tcsetattr(_fd, TCSANOW, &_termios)坐在析构函数中,但它无关紧要。

不管有没有这个 termios 初始化,应用程序退出后系统中都会发生奇怪的事情。有时plain cat(或hd)每次都立即退出打印任何内容或相同的东西,有时它正在等待并且不显示任何肯定发送到端口的数据;和close()read()也是,但不是每次)都会WARNING向 dmesg发出一个奇怪的指代 usb-serial.c

我检查了数十次硬件和固件(即使在不同的机器上),我确信它按预期工作;此外,我剥离了固件以一遍又一遍地打印相同的消息。

如何在不破坏任何东西的情况下使用串口?谢谢。

0 投票
3 回答
552 浏览

linux - Linux:我可以在不使用任何 IPC(管道等)的情况下读取另一个进程的输出吗?

在linux中是否有可能以某种方式读取另一个进程的输出(来自stdout和stderr)而不知道它?所以假设我有一个进程 A 在后台运行,而进程 B 想要读取它的输出 - 有可能吗?我不能使用管道或屏幕程序。我尝试从 /proc/xxx/fd 或 /pts/x 控制台等读取,但到目前为止没有任何效果。

0 投票
4 回答
3568 浏览

c - 如何判断一个 Linux TTY 是否在控制一个进程组

所以我有一个 tty(比如说 /dev/tty5)并且想知道它当前是否是进程组或会话的控制 tty,或者它当前是否是无主的。POSIX 有两个 API 函数,它们在这里建议自己:tcgetpgrp() 和 tcgetsid(),但这两个函数都只有在调用者将 tty 作为控制 tty 时才有效——在这种情况下,这使它们几乎无用(实际上我没有根本看不到 tcgetsid() 的意义)。

有人建议我如何从 C 中以理智的方式检测终端当前是否是进程的控制终端?我只关心 Linux,所以如果需要特定于 Linux 的 API,那对我来说没问题。

0 投票
8 回答
15039 浏览

c - C write() 在调用 close(fd) 之前不会发送数据

所以我有这个测试代码通过 USB 串行端口发送“HELLO”:

程序执行良好,并发送“HELLO”,但有一个问题。调用 write() 函数时似乎不会发送“HELLO”,而是在关闭文件描述符时发送。我在上面添加了 sleep(5) 行来测试这个理论,果然,“HELLO”在程序执行后约 5 秒发送。如何在 write() 命令之后而不是在 close() 之后立即发送“HELLO”?

0 投票
3 回答
9611 浏览

linux - 如何在ubuntu下使用nasm(程序集)从键盘读取单个字符输入?

我在ubuntu下使用nasm。顺便说一句,我需要从用户的键盘获取单个输入字符(例如当程序要求您输入 y/n 时?),因此在按下键且不按 Enter 的情况下,我需要读取输入的字符。我用谷歌搜索了很多,但我发现的所有内容都与这条线(int 21h)有关,导致“分段错误”。请帮我弄清楚如何获得单个字符或如何克服这个分段错误。

0 投票
2 回答
1957 浏览

console - 有没有办法等待并从(远程)终端会话中获得按键?

我一直在用java和php(从头开始)玩一些ANSI的东西(比如颜色等),我试图找到一种基本上等待按键的方法。我想在我的主事件循环结束时有类似下面的伪代码:

但是过去几天我一直在尝试的一切都失败了,因为按键只有在用户按下回车后才能在 STDIN 上可用。

你用什么语言回答并不重要,但是java,,php普通旧的c或者c#最好的,我不能使用任何真正漂亮的库东西,因为我需要将它移植到所有这四种语言......我需要这个通过telnetssh连接工作,但到目前为止我的研究表明,除非您在本地计算机上工作,否则这是不可能的。

请证明我错了。

0 投票
1 回答
2021 浏览

java - 与 java 的持久本地 tty 会话

我正在开发一个 Web shell 客户端,具有选项卡功能“代码完成”和一个问题。任何人都知道一种打开本地 tty 持久连接的方法,我可以在一个会话中执行多个命令,我不想一直执行 Runtime.getRuntime().exec("command"); 有什么建议吗?问候

0 投票
1 回答
1797 浏览

linux - 使用 TTY 的中断驱动驱动程序?

我是开发Linux驱动程序的新手...... 我正在开发一个使用 TTY 访问串口的 SMS 驱动程序(通过串口到调制解调器的 AT 命令)。驱动程序是用 C 编写的。

在设计中,从调制解调器到驱动程序的消息可以由两个事件触发:

1) 响应驱动程序发出的 AT 命令的状态(即预期消息)

2) 新短信指示(即意外消息)

我计划使用两个线程 - 一个用于写入 TTY,一个用于从 TTY 读取。是否可以配置 TTY 以便我的读取线程在传入字符时唤醒(即读取线程是事件触发的,而不是基于轮询)?

最好的问候, Witek